看到大家对Unicode编码非常感兴趣,特别整理这篇补充内容给大家。
1、首先区别编码字符集(一个字符集)和字符集编码(表示一种编码规则):
Unicode是编码字符集,而UTF-8, UTF-16, UTF-32是字符集编码。
因为计算机智能处理二进制数字,如果要处理文本、图像、声音等就必须先转换为二进制才能处理,这个过程就是编码过程。早期的计算机在设计时采用8个比特(bit,位)作为一个字节(byte),所以一个字节能够表示的最大整数就是255(二进制11111111 = 十进制的255),如果要表示更大的整数,就需要使用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。由于计算机是美国人发明的,因此最早只有127个字符被编码到计算机中,也就是英文字母的大小写、数字和一些符号。这个编码被称为ASCII编码。
随着计算机在世界范围的推广使用,要处理中文为代表的非字母语系,显然一个字节就不够用了,至少需要两个字节,而且还不能和ASCII编码冲突。所以,中国制定了GB2312编码。可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里。
各国有各国的标准,就会不可避免地出现冲突,造成的结果就是,在多语言混合的文本中,显示出来会有乱码。
因此,Unicode应运而生。Unicode把所有的语言都统一到一套编码中,这样就不会再有乱码问题了。
Unicode标准也在不断发展