为什么很多网站中文占两个字符,英文占一个字符?

2017-04-19 11:54:55 +08:00
 w708833018

很多网站在表单输入框要做验证,验证字符数量的时候,很多网站的默认规则是:中文占两个字符,英文占一个字符 比如“网易云课堂的昵称”

这个规则是怎么来的?有什么考量? 中文和英文都各占一个字符不行吗

4195 次点击
所在节点    问与答
12 条回复
xss
2017-04-19 12:20:58 +08:00
unicode 最少需要 2bytes
ascii 字符 1byte

中文应该都在 unicode 字符里面, 键盘上所有可见的字符都在 ascii 字符集里面.
morethansean
2017-04-19 12:33:52 +08:00
比如论坛的用户名长度,如果最低长度是 2 ,允许 2 个字母他们觉得太少了,至少要 4 个字母吧,但是 4 个中文又太多了, 2 个中文也不错啊 2333333
JJaicmkmy
2017-04-19 12:34:01 +08:00
因为本身中文就是 2 byte 。
zjqzxc
2017-04-19 12:38:10 +08:00
一般来说, gbk 占 2 字节, utf-8 占 3 字节
mozutaba
2017-04-19 12:52:00 +08:00
写错了?中文 1 个字符,英文半个字符
jasontse
2017-04-19 12:58:09 +08:00
因为全角字符是双字节的
jybox
2017-04-19 13:06:01 +08:00
因为有些对多字节字符集支持比较弱的数据库和编程语言,对于字符串的长度是按照实际占用的字节数计算的,目前比较新的都是按照字符数来计算了。
ferrum
2017-04-19 13:17:27 +08:00
我也是这么设置的,但并不是因为什么一个字节两个字节的,主要是 UI 的限制。因为一个汉字的显示宽度大概等于两个字母,同时一个汉字的信息密度要比一个字母大。

假如一个数据限制了五个字符长度,在汉字和字母都算一个字符的情况下,中文可以写「苹果手机」,英文却连「 iPhone 」都不能写。
w708833018
2017-04-19 13:22:53 +08:00
@ferrum 我也是这么觉得
msg7086
2017-04-19 13:24:53 +08:00
历史遗留问题,偷懒直接判断字节数。
msg7086
2017-04-19 13:26:44 +08:00
还有一个潜在的原因。一个汉字的宽度大约等于两个字母数字,这样计算的话最终的字符宽度会比较接近。
Khlieb
2017-04-19 15:47:42 +08:00
@zjqzxc utf-16 也是占 2 字节

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355843

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX