utf8, utf16, utf32在前256个字符是不是一样的?
1. 基本概念
- Unicode码点范围0到255对应Basic Latin字符集,包括ASCII字符(0-127)和Latin-1补充字符(128-255)。
- UTF-8:一种变长编码,对于码点0-127(ASCII),使用一个字节;对于128-255,使用两个字节。
- UTF-16:一种变长编码,对于码点0-65535(包括前256个),使用两个字节(一个代码单元)。
- UTF-32:一种定长编码,每个码点使用四个字节。
2. 分析
在码点0-255范围内:
- UTF-8:对于0-127,字节值等于码点值;对于128-255,使用两个字节(例如,128为0xC2 0x80)。
- UTF-16:对于所有0-65535,使用两个字节,字节值与码点值相同(在Little-endian或Big-endian下)。
- UTF-32:每个码点使用四个字节,高位填充零。
因此,它们的编码是不同的:
UTF-8对于128-255使用多个字节,而UTF-16和UTF-32使用固定字节数,具体字节序列不一致。
所以UTF-8、UTF-16和UTF-32在前256个字符的编码不是一样的。