很多网站在表单输入框要做验证,验证字符数量的时候,很多网站的默认规则是:中文占两个字符,英文占一个字符 比如“网易云课堂的昵称”
这个规则是怎么来的?有什么考量? 中文和英文都各占一个字符不行吗
1
xss Apr 19, 2017
unicode 最少需要 2bytes
ascii 字符 1byte 中文应该都在 unicode 字符里面, 键盘上所有可见的字符都在 ascii 字符集里面. |
2
morethansean Apr 19, 2017
比如论坛的用户名长度,如果最低长度是 2 ,允许 2 个字母他们觉得太少了,至少要 4 个字母吧,但是 4 个中文又太多了, 2 个中文也不错啊 2333333
|
3
JJaicmkmy Apr 19, 2017
因为本身中文就是 2 byte 。
|
4
zjqzxc Apr 19, 2017
一般来说, gbk 占 2 字节, utf-8 占 3 字节
|
5
mozutaba Apr 19, 2017
写错了?中文 1 个字符,英文半个字符
|
6
jasontse Apr 19, 2017 via iPad
因为全角字符是双字节的
|
7
jybox Apr 19, 2017
因为有些对多字节字符集支持比较弱的数据库和编程语言,对于字符串的长度是按照实际占用的字节数计算的,目前比较新的都是按照字符数来计算了。
|
8
ferrum Apr 19, 2017 我也是这么设置的,但并不是因为什么一个字节两个字节的,主要是 UI 的限制。因为一个汉字的显示宽度大概等于两个字母,同时一个汉字的信息密度要比一个字母大。
假如一个数据限制了五个字符长度,在汉字和字母都算一个字符的情况下,中文可以写「苹果手机」,英文却连「 iPhone 」都不能写。 |
9
w708833018 OP @ferrum 我也是这么觉得
|
10
msg7086 Apr 19, 2017
历史遗留问题,偷懒直接判断字节数。
|
11
msg7086 Apr 19, 2017
还有一个潜在的原因。一个汉字的宽度大约等于两个字母数字,这样计算的话最终的字符宽度会比较接近。
|