字符集与字符编码

原创
2015/07/23 16:53
阅读数 26

有几个概念需要先搞清楚。

1.字符集:能够表示所有字符的集合。其中每一个字符都在字符集中有唯一的位置(即码位也称字符码)。

2.字符编码:一种具体的编码方式,用来对字符码进行存储(即二进制的实际表现)。

    虽然一种字符集的字符码是唯一的,但是,由于计算机存储数据通常以字节为单位,而且出于兼容ASCII码,节省存储空间的原因。通常会有多种编码方案,来对字符码进行编码。

    比如unicode字符集,就有utf-8,utf-16,utf-32三种编码方案。

3.内码:字符在内存中的二进制表示,在windows上,以''包括的字符,内码是ANSI编码的二进制;以L''包括的字符,内码是字符在Unicode中的字符码。

4.根据不同编码方案,得到的二进制字节流,会分为ASCII编码的单字节字符(串)、ANSI和UTF-8编码的多字节字符(串)、UTF-16编码的宽字节字符(串)。

    单字节与多字节的编码单位都是一个字节,所以不用考虑字节序的问题,宽字节的编码单位是2个字节,所以要考虑大小端的问题。

    eg:‘永’这个字的字符码是6C38(10进制为27704,也就是说,用这个字是unicode字符集中的第27704个字符),但是在不同的编码方案下,二进制是不同的。

utf-8 E6B0B8 (二进制1111 0110 1011 0000 1011 1000) 3个字节(多字节)

utf-16 6C38 (二进制0110 1100 0011 1000) 2个字节(宽字节)

utf-32 00006C38 (二进制0000 0000 0000 0000 0110 1100 0011 1000) 4个字节


展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部