最近在做emoji的开发,需要了解到unicode的知识。学习笔记如下。
1,unicode码是跨平台通用的,它是一个数字,代表了计算机上显示出来的符号(比如:中日韩象形文字、拉丁字符等);
2,unicode用数字0-0x10FFFF来映射这些字符;
3,UTF-8以字节为单位对unicode进行编码。可以使用1~6个字节不等去表示一个unicode码,如下所示。
Unicode/UCS-4 | bit数 | UTF-8 | byte数 |
0000~007F | 0~7 | 0XXX XXXX | 1 |
0080~07FF | 8~11 | 110X XXXX 10XX XXXX |
2 |
0800~FFFF | 12~16 | 1110XXXX 10XX XXXX 10XX XXXX |
3 |
1 0000~1F FFFF | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX |
4 |
20 0000~3FF FFFF | 22~26 | 1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX |
5 |
400 0000~7FFF FFFF | 27~31 | 1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX |
6 |
4,softbank的encode是2个字节,以E开头;
5,java中的String使用UTF-16方式存储;
6,UTF-16中,字符值在U+0000到U+FFFF(注意U+D800到U+DBFF无定义)之间的字符(也叫做BMP, Basic Multilingual Plane),直接用两个字节表示。 字符值在U+10000到U+10FFFF(共有0xFFFFF个字符)之间的字符(也叫做增补字符集, supplementary characters),需要用四个字节表示。
时间: 2024-10-01 08:09:39