Unicode标准与其他编码规则
世界上有很多的国家,用不同的字符,他们也要使用计算机,那ASCII编码就不够用了呀,怎么办呢?Unicode标准来了。
Unicode标准是一个由国际标准化组织(ISO)和国际电工委员会(IEC)共同制定的字符编码标准,旨在为所有现代文字和符号提供一个唯一的编码。
Unicode标准定义了一个称为“Unicode”的字符集,它包含了世界上几乎所有已知语言和文化中的字符。定期更新最新字符进来,这样就可以实现全球化了!
当然也要兼容ASCII呀,所以ASCII 字符(十进制0-127)在 Unicode 中具有相同的编码,所以‘a’还是‘97’哈。
Unicode标准定义了字符集,也定义了多种编码格式,如UTF-8、UTF-16、GBK(用于简体中文字符的编码方式)、GB2312等。
UTF-16是一种固定长度的编码方式,它总是使用 2 个字节来表示一个字符,除非是代理对,此时会使用 4 个字节。通常用于内部处理;
UTF-8是一种变长度的编码方式,可以根据字符的 Unicode 码点使用不同数量的字节进行编码。通常用于网络传输和文件存储。
Unicode 码点(code point)是用来唯一标识 Unicode 字符的数值,这个数值是十进制的。Unicode 码点从 U+0000(十六进制)到 U+10FFFF(十六进制),共有 1,114,112 个不同的码点。好吧,又把十进制转成了十六进制来表示,反正我是记不住。
将十进制数转换为十六进制数的过程称为十六进制表示。这个过程可以通过以下步骤完成:
分组:将十进制数从右到左每四位一组进行分组。如果数字小于四位,可以在前面添加零直到它成为四位数。
转换:对于每一组四位数,将其转换为对应的十六进制数。十六进制数使用0-9和A-F(大写或小写)来表示。
0-9的十进制数直接对应到十六进制数。
10-15的十进制数对应到十六进制数A-F。
组合:将转换后的十六进制数按照从左到右的顺序组合起来,得到最终的十六进制数。
例如,将十进制数1234转换为十六进制数:
分组:1234已经是四位数,所以不需要分组。
转换:1234(十进制)= 302(十六进制),因为1234除以16等于76余18,所以十六进制数是302。
组合:组合后的十六进制数是302。
也就是说一个Unicode码点对应一个十进制数字,只不过因为字符的编码都是两个字节,就转换成了十六进制显示,比如“我爱你”在UTF-8编码中,三个字对应的十六进制和十进制编码如下:
“我”字的UTF-8编码: 十六进制:E4 BD A0 十进制:228 189 160
“爱”字的UTF-8编码: 十六进制:E5 A5 BD 十进制:229 165 189
“你”字的UTF-8编码: 十六进制:E4 BD A5 十进制:228 189 165
这个也不用记,了解即可,需要换算直接使用工具就行。
总之,有了Unicode字符集和编码方式标准,现在我们就可以直接使用字符来告诉计算机了。