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