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

谈谈中文编码

  •  
  •   pinews · 37 天前 · 1153 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
        1
    raysonx   37 天前   ♥ 1
    黑客也喜欢 GB2312,比如通过插入 GB 码的第一个字符来改变后续字节的解析,达到绕过字符串检测甚至代码注入的目的。关键词:Multibyte character exploits
        2
    googlelalala   37 天前 via Android
    现在不都是 utf-8 吗?—来自小白点提问
        3
    Northxw   37 天前
    单个中文字符所占长度:2.x (x < 5 ),所以如果要做具体计算,为什么不把默认 2 字节中缺失的这部分算上去。ps: 或许我们没在一条线上。哈哈。
        4
    her999   36 天前
    @googlelalala 是啊,都 9012 年了,还有谁在用 GB2312 编码吗?早就统统使用 utf-8 了。
        5
    googlelalala   36 天前 via Android
    @her999 事实证明,英语的确比中文实用。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3907 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 09:30 · PVG 17:30 · LAX 02:30 · JFK 05:30
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1