繁体   English   中英

Python中的UTF-16占用4个字节[重复]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM