unicode是一种字符编码方案,它为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求
Unicode含义
Unicode给每个字符提供了一个唯一的数字,不论是什么平台、不论是什么程序、不论是什么语言。它在1994年正式公布,是计算机领域里一项业界标准,包括字符集,编码方案等。Unicode是为了解决传统字符编码方案的局限而产生的,为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求。
Unicode编码的发展
计算机在设计时采用8个比特(bit)作为一个字节(byte),所以一个字节最多能表示256个字符,早期对于使用英文的西方国家来说,一个字节可以存储大小写英文字母、数学和一些符号,因此使用一个字节来制作码表(ASCII)。后来计算机传到了其他的国家,很多国家都是使用自己的语言,比如中文、日文、韩文…语言复杂了,为了解决这个问题,每个国家制定自己的码表,中国在1980年便制定了GB2312汉字编码字符集,汉字比英文多很多,一个字节明显不够用,所有就使用2个字节来编码。然而不同国家所定义的字符编码虽然可以使用,但是在不同的国家间却经常出现不兼容的情况。如果电脑想处理多语言环境(使用中文或其他语言)可能存在无法同时支持多语言环境。为了统一所有文字的编码,产生了Unicode,把所有语言的都统一到一套编码里,这样就不会乱码了。
Unicode编码表示
在表示Unicode字符时,通常会用U+然后紧跟一组16进制的数字表示一个字符,编码从U+0000到U+FFFF,共支持6万多个字符,在BMP
以外的字符则需要使用5位或者6位16进制来表示。
目前Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面(Plane),每个面拥有65536个码位,共1114112个。
Unicode就像一张表,包所有的字符都编写到表中,每一个字符对应一个数字,称为码点(code point),这个数字一般不直接使用,通
过不同的编码方式来使用
UTF-8、UTF-16、UTF-32就是将数字转换到程序数据的编码方案。UTF是“UnicodeTransformation Format”的缩写,可以翻译成
Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据
十进制 | Unicode编码 | UTF-8字节流 |
0-127位 | 0x000000-0x00007F | 0xxxxxxx(7位) |
128-2047位 | 0x000080-0x0007FF | 110xxxxx 10xxxxxx(11位) |
2048-65535位 | 0x000800-0x00FFFF | 1110xxxx 10xxxxxx 10xxxxxx(16位) |
65536-1114111位 | 0x010000-0x10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(21位) |