[英]UTF-16 in Python taking 4 bytes [duplicate]
我正在使用Python-3进行Unicode编码,并发现了我无法理解的行为。
以下案例按预期工作:
x = "A"
fo = open("test.txt","w",encoding="utf_8")
fo.write(x)
fo.close()
xxd -b test.txt
00000000:01000001(1字节如预期)
x = "A"
fo = open("test.txt","w",encoding="utf_16_le")
fo.write(x)
fo.close()
xxd -b test.txt
00000000:01000001 00000000(2字节预期)
x = "A"
fo = open("test.txt","w",encoding="utf_16_be")
fo.write(x)
fo.close()
xxd -b test.txt
00000000:00000000 01000001(2字节预期)
为什么使用utf_16编码为4个字节? :-
我的理解是UTF-16是一种可变长度字符编码,根据字符使用16位或32位。 对于字符A
,它只能使用16位。 有人可以帮我了解这种行为吗?
x = "A"
fo = open("test.txt","w",encoding="utf_16")
fo.write(x)
fo.close()
xxd -b test.txt
00000000:11111111 11111110 01000001 00000000
前两个字节是UTF 16字节顺序标记(BOM)。 参见http://www.unicode.org/faq/utf_bom.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.