字符编码总结

前段日子常做编码转换,各种概念,各种纠结于其中,做个小总结,以后遇到继续补充。

从字符编码可以看出计算机系统发展历程,主要概念出现和发展始于windows平台。

 

ascii:一开始使用这种字符集,也够用。

 

gb2312,gbk,gb18030: 后续发展到中国这边,GB2312有6763个汉字,GBK有21003个汉字,GB18030-2000有27533个汉字,GB18030-2005有70244个汉字。前段日子有个bug纠结在gb18030 的扩展部分,映射错了unicode的pua区段。

 

big5,jis,cjk: 繁体中文编码;日文编码;中,日, 韩相同字符编码。

 

codepage,ansi/oem,unicode/ucs: 发展到一定程度,系统要统一处理各个字符集,出现字符集映射到内码(现在windows内码为unicode),所以就出现映射表,这张表就俗称代码页,gb2312是cp936,根据codepage找到映射表,转为内码,统一处理。

 

unicode/ucs,utf-8/16/32: unicode是后来各种字符集发展统一标准时出现的编码,ucs(universal char set)是unicode的另一种说法,ucs4->unicode 32位;utf系列是封装过的unicode格式;

 

bom/utf8: Byte Order Mark。unicode中无效编码为FFFE,一般用来判断字节传输顺序。转为utf-8编码则为EF BB BF,判断文本是否为utf-8编码的格式。

 

bmp/ucs4: ucs4从高到低字节分为group,plane,rows,cells;其中group = plane = 0时,称为Base Multilingual Plane(BMP)。目前未知bmp有什么用,不知道是不是应该这样理解:ucs4的bmp形式就是ucs-2 应该这样理解bmp用途。 

 

locale/LCID: 有时候发现wps安装目录下offcie6/2052这个文件夹,2052为语言资源包。该值计算如下:

 

 LCID由32位存储,低14位有效,存储两个值:charset,subCharset; 高10位放subCharset,低4位放Charset;

于是有 (0x02 << 10) + 0x04 = 2052;

 

compound_text: 处理x-windows拷贝粘贴时遇到的这种编码,当时模拟器在转换utf-8时候出现Bug。compound_text用32位表示,当时为了统一处理多种字符集出现的文本。个人理解为unicode前身。多出现在linux平台,各种客户端传输数据用。现逐步被utf-8取代。

C0 GL C1 GR。C0,C1为控制符,GL,GR为字符集编码。文档如下:http://www.sensi.org/~alec/locale/other/ctext.html

 

总结编码这块的时候,看到一位前辈的一些资料,其思想很踏实,实在,很有十年前程序员的风格。有句话很实在=》不管以后是发展为什么样的职业,甚至是转行,但,现在是程序员,就踏踏实实地做好程序员该做的事。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值