我有一个字符,当在十六进制编辑器中查看时显示为:
FF FE 08 27
意味着它的二进制表示是(四字节编码):
11111111
11111110
00001000
00100111
查看unicode table and description这似乎没有意义,因为四字节编码必须具有11110xxx
形式的前导字节。
我很可能误解了unicode规则,但是你可以告诉我在确定这个角色的代码点时我遇到了什么问题吗?
答案 0 :(得分:4)
Unicode字符U+FEFF
是字节顺序标记(BOM),表示这是小端UTF-16编码,而不是UTF-8。字符为U+2708
或AIRPLANE
(✈️)字符。
使用Python 3的一点证明:
>>> import unicodedata as ud
>>> s=b'\xff\xfe\x08\x27'
>>> s.decode('utf16') # Removes BOM and uses indicated little-endian decode.
'\u2708'
>>> s.decode('utf-16le') # explicit decode in little endian leaves BOM.
'\ufeff\u2708'
>>> for c in u: print(ud.name(c))
...
ZERO WIDTH NO-BREAK SPACE # also known as BOM.
AIRPLANE