为什么会出现不是四到六位的十六进制编码?
unicode吧
全部回复
仅看楼主
level 3
惜命草
楼主
其他字符明明都正常的,为什么这些字会出现两位,三位甚至八位的十六进制编码,这让我怎么找啊?
#Unicode#
2023年07月10日 06点07分
1
level 12
函数返回值
这是utf-16的编码,建议先学习utf-16
2023年07月12日 10点07分
2
level 12
函数返回值
这个转换工具不太靠谱,没有在前面补零,辅助平面是按utf-16来显示的
2023年07月12日 10点07分
3
level 5
坠落UFO
UTF-16会对于码位超过0xFFFF(65535)的字符使用代理项来表示。
代理项有这三类:
U+D800-U+DB7F:高位代理项
U+DB80-U+DBFF:高位私用区代理项
U+DC00-U+DFFF:低位代理项
如果一个字符的编码大于0xFFFF,则会按以下方式转为一个
高位(私用区)代理项+低位代理项的形式(顺序不能反过来)
设C为一个码位超0xFFFF的字符的编码,则:
高位(私用区)代理项的编码为:
[(C - 65536) >> 10] + 0xD800
低位代理项的编码为:
[(C - 65536) & 1023] + 0xDC00
注:x >> y是右移运算,相当于x/2^y,然后向下取整。
x & 1023表示把x转为二进制后只保留后十位,如67850的二进制是10000100100001010,后十位是0100001010,也就是266。
2024年06月02日 12点06分
4
1