Unicode 与 UTF8 UTF16 UTF32
什么是Unicode
- 定义:
Java支持Unicode码,Unicode码是由Unicode协会建立的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理、和显示。 - 基本数据类型char试图通过提供一种能够存放任何字符的简单数据类型来利用这个设计。
- 起初:16位的字符编码 只能产生65536个字符
- 发展:目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面
- 若现只考虑16位Unicode字符。存储在char型变量中。
一个16位Unicode码占两个字节,用\u开头的4位十六进制数表示,范围从’\u0000’ 到 ‘\uFFFF’。
**e.g.**如下两条语句 都是 将字符A赋值给 char 型变量letter:char letter = 'A'; char letter = '\u0041'; // Character A's Unicode is 0041
UTF-8 UTF-16 UTF-32
UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
- UTF-8以字节为单位对Unicode进行编码。UTF-8的特点是对不同范围的字符使用不同长度的编码。
- UTF-16编码以16位无符号整数为单位。
- UTF-32编码以32位无符号整数为单位。Unicode的UTF-32编码就是其对应的32位无符号整数。
联系
- 在Unicode中,我们有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF是“Unicode Transformation Format”的缩写,可以翻译成Unicode字符集转换格式,即怎样将Unicode定义的数字转换成程序数据。
- e.g. “汉字”对应的数字是0x6c49和0x5b57,而编码的程序数据是:
char data_utf8[]={0xE6,0xB1,0x89,0xE5,0xAD,0x97};//UTF-8编码 char16_t data_utf16[]={0x6C49,0x5B57}; //UTF-16编码 char32_t data_utf32[]={0x00006C49,0x00005B57};//UTF-32编码
本文深入探讨了Unicode编码标准,包括其历史发展、16位字符编码的限制以及扩展后的17个平面。详细介绍了UTF-8、UTF-16、UTF-32三种编码方案,及其如何将Unicode字符转换为程序数据,适用于不同的应用场景。
628

被折叠的 条评论
为什么被折叠?



