谈谈中文编码

2019-04-13 03:24:56 +08:00
 pinews
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 的概率更大。
2140 次点击
所在节点    程序员
5 条回复
raysonx
2019-04-13 03:36:44 +08:00
黑客也喜欢 GB2312,比如通过插入 GB 码的第一个字符来改变后续字节的解析,达到绕过字符串检测甚至代码注入的目的。关键词:Multibyte character exploits
googlelalala
2019-04-13 07:10:32 +08:00
现在不都是 utf-8 吗?—来自小白点提问
Northxw
2019-04-13 07:44:24 +08:00
单个中文字符所占长度:2.x (x < 5 ),所以如果要做具体计算,为什么不把默认 2 字节中缺失的这部分算上去。ps: 或许我们没在一条线上。哈哈。
her999
2019-04-13 19:51:49 +08:00
@googlelalala 是啊,都 9012 年了,还有谁在用 GB2312 编码吗?早就统统使用 utf-8 了。
googlelalala
2019-04-13 19:55:08 +08:00
@her999 事实证明,英语的确比中文实用。

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

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

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

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

© 2021 V2EX