答案 0 :(得分:6)
TL; DR这都是Unicode联盟的约定。
在运行文本中,单个Unicode代码点表示为U + n,其中n为4, 六个十六进制数字,使用数字0–9和大写字母A–F(10到15, 分别)。除非代码点少于四个,否则将省略前导零。 十六进制数字-例如,U + 0001,U + 0012,U + 0123,U + 1234,U + 12345, U + 102345。
它们是十六进制数字,代表Unicode标量值。最初,只有第一个平面称为基本多语言平面,该平面支持定义的U+0000
至U+FFFF
范围。因此,最初,U +编码始终具有4个十六进制字符。
但是,这仅允许64 Ki(65536)个代码点用于字符(不包括某些保留值)。因此,单机后来扩展到17架。对于U+10000
或更高的值,前导零被抑制,因此下一个字符被写为U+10000
,而不是U+010000
。当前有17个64Ki代码点的平面(其中一些可以保留),从U + 0000,U + 10000 ... U + 90000,最后到U100000。
U + xxxx 表示法不遵循UTF-8编码。它也不遵循UTF-16,UTF-32或已弃用的UCS编码(大或小端序)。但是,基本多语言平面中的字符编码与十六进制的UTF-16(BE)相同。请注意,UTF-16可能包含代理代码单元,这些代码单元用作转义符来编码其他平面中的字符。这些代码单位的范围未映射到字符,因此不会出现在文本代码点表示中。
例如,查看加号-减号±
:
Unicode code point: U+00B1 (as a textual string)
UTF-8 : 0xC2 0xB1 (as two bytes)
UTF-16 : 0x00B1
UTF-16BE : 0x00B1 as 0x00 0xB1 (as two bytes)
UTF-16LE : 0x00B1 as 0xB1 0x00 (as two bytes)
https://www.fileformat.info/info/unicode/char/00b1/index.htm
可以在at sil.org中找到很多此类信息。