w708833018
V2EX  ›  问与答

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

  •  
  •   w708833018 · Apr 19, 2017 · 5355 views
    This topic created in 3496 days ago, the information mentioned may be changed or developed.

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

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

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

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

    假如一个数据限制了五个字符长度,在汉字和字母都算一个字符的情况下,中文可以写「苹果手机」,英文却连「 iPhone 」都不能写。
    w708833018
    w708833018
    OP
    Apr 19, 2017
    9
    @ferrum 我也是这么觉得
    msg7086
    msg7086
    Apr 19, 2017
    10
    历史遗留问题,偷懒直接判断字节数。
    msg7086
    msg7086
    Apr 19, 2017
    11
    还有一个潜在的原因。一个汉字的宽度大约等于两个字母数字,这样计算的话最终的字符宽度会比较接近。
    Khlieb
    Khlieb
    Apr 19, 2017 via Android
    12
    @zjqzxc utf-16 也是占 2 字节
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1983 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 14:25 · PVG 22:25 · LAX 06:25 · JFK 09:25
    ♥ Do have faith in what you're doing.