【发布时间】:2018-11-18 21:43:36
【问题描述】:
我正在使用 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 个字节)
为什么 4 字节使用 utf_16 编码? :-
我的理解是 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
【问题讨论】:
-
如果在没有手动指定字节序的情况下写入,则 BOM 是必需的。
-
@usr2564301,谢谢。我想,我只会得到反对票,但没有解释:)
标签: python-3.x unicode