V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
w708833018
V2EX  ›  问与答

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

  •  
  •   w708833018 · 2017-04-19 11:54:55 +08:00 · 4193 次点击
    这是一个创建于 2811 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  2017-04-19 13:22:07 +08:00
    我知道从技术上讲中文字符与英文字符占的字节不一样,但我觉得这更像是个 产品或设计原因。有没有产品或设计愿意回答下。
    12 条回复    2017-04-19 15:47:42 +08:00
    xss
        1
    xss  
       2017-04-19 12:20:58 +08:00
    unicode 最少需要 2bytes
    ascii 字符 1byte

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

    假如一个数据限制了五个字符长度,在汉字和字母都算一个字符的情况下,中文可以写「苹果手机」,英文却连「 iPhone 」都不能写。
    w708833018
        9
    w708833018  
    OP
       2017-04-19 13:22:53 +08:00
    @ferrum 我也是这么觉得
    msg7086
        10
    msg7086  
       2017-04-19 13:24:53 +08:00
    历史遗留问题,偷懒直接判断字节数。
    msg7086
        11
    msg7086  
       2017-04-19 13:26:44 +08:00
    还有一个潜在的原因。一个汉字的宽度大约等于两个字母数字,这样计算的话最终的字符宽度会比较接近。
    Khlieb
        12
    Khlieb  
       2017-04-19 15:47:42 +08:00 via Android
    @zjqzxc utf-16 也是占 2 字节
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:45 · PVG 14:45 · LAX 22:45 · JFK 01:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.