V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pinews
V2EX  ›  程序员

谈谈中文编码

  •  
  •   pinews · 2019-04-13 03:24:56 +08:00 · 2276 次点击
    这是一个创建于 2053 天前的主题,其中的信息可能已经有所发展或是发生改变。
    GB2312,和其他东亚字符集采用的 EUC 方案,一个字节 8 位( 256 个字符),ASCII 是 7 位( 128 个字符),其中前 32 个为控制字符,第 33 个字符是空白字符,欧洲扩展字符集跟 ASCII 相似,空着 33 个位置。。EUC 方案也空缺着这 33 个位置。
    这不但意味完全兼容 ASCII,还意味即使丢失一些字节也不影响其他字节的意思,即使不正确的编码会乱码,但不会改变内容,因为没有一个字节两个意思。
    另外简体中文常用字 1000 多个,次常用字 2000 多个,常用字覆盖率 98%以上,基本满足日常需要。
    GBK,第一字节不再空着 33 个位置,第二字节更是向前多用了 64 个位置,第一个字节我能理解,第二字节为何恰好多用了 64 个位置不太清楚,这里会与两个常用的字符冲突,一个是\一个是|,比如赵孟頫的頫编码是 EE5C,可能会引起问题。不过这些字符都不是常用字,BIG5 和 GBK 类似,因为放了常用字遇到 5C 的概率更大。
    5 条回复    2019-04-13 19:55:08 +08:00
    raysonx
        1
    raysonx  
       2019-04-13 03:36:44 +08:00   ❤️ 1
    黑客也喜欢 GB2312,比如通过插入 GB 码的第一个字符来改变后续字节的解析,达到绕过字符串检测甚至代码注入的目的。关键词:Multibyte character exploits
    googlelalala
        2
    googlelalala  
       2019-04-13 07:10:32 +08:00 via Android
    现在不都是 utf-8 吗?—来自小白点提问
    Northxw
        3
    Northxw  
       2019-04-13 07:44:24 +08:00
    单个中文字符所占长度:2.x (x < 5 ),所以如果要做具体计算,为什么不把默认 2 字节中缺失的这部分算上去。ps: 或许我们没在一条线上。哈哈。
    her999
        4
    her999  
       2019-04-13 19:51:49 +08:00
    @googlelalala 是啊,都 9012 年了,还有谁在用 GB2312 编码吗?早就统统使用 utf-8 了。
    googlelalala
        5
    googlelalala  
       2019-04-13 19:55:08 +08:00 via Android
    @her999 事实证明,英语的确比中文实用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5966 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 03:15 · PVG 11:15 · LAX 19:15 · JFK 22:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.