编码知识

ANSI

为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

 

VC++的多字节编码方案其实就是ANSI编码,微软坑爹啊,搞糊涂了多少程序员

 

Unicode

Unicode有两个版本UCS2和UCS4

UCS2可以保存65535个字符

UCS4理论上可以保存65535 * 65535,几乎把所有的字符都能包进去了

 

Unicode只是一个字符集,具体在计算机怎么表示和存储要使用utf编码,通常的utf编码有utf8,utf16,u6f32

 

除windows以外,大多系统都采用了ucs4编码集,但windows使用ucs2, 其他系统的编码方案大多是utf8,windows是utf16.

windows所谓的Unicode其实只是UCS4的一个子集,就算用了Unicode各国文字也无法混排。

windows又一次坑爹。

 

 

 

 

你可能感兴趣的:(编码知识)