UTF-16是固定两个位元组长度吗?
答案是否定的。
Unicode 和 UTF-8 有什么区别?介绍两个概念,字符集和编码规则。
- Unicode 是「字符集」
- UTF-8 是「编码规则」
字符集:为每一个「字元」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
编码规则:将「码位」转换为位元组序列的规则(编码/解码 可以理解为 加密/解密 的过程)
ANSI的」Ascii」编码(American Standard Code for Information Interchange,美国信息互换标准代码)
GB2312 是对 ASCII 的中文扩展。
GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号
又加了几千个新的少数民族的字,GBK扩成了GB18030
广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,字符集和 UTF-8、UTF-16、UTF-32 等等编码……
Unicode 字符集为每一个字元分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进位为 0x77E5)。
Unicode 和 UTF-8 有什么区别?笨笨阿林:刨根究底字元编码之十三——UTF-16编码方式笨笨阿林:刨根究底字元编码之十四——UTF-16究竟是怎么编码的
结论
UTF-16是变长编码方式,每个字元编码为16位或32位;而UCS-2是定长编码方式,每个字元编码固定为16位。但两者的码元却都是16位的(而UTF-32和狭义的UCS-4的码元都是32位的)。
另外,UTF-16中,大部分汉字采用两个位元组编码,少量不常用汉字采用四个位元组编码。
Windows 2000及之后的版本是支持UTF-16的,之前的Windows NT/95/98/ME是只支持UCS-2的。
在 Java 中,UTF-16 代码单元和代码点分别是什么意思?
推荐阅读: