我在 Python 2.7.2 中有一个字符串 u"\u0638"。 当我将它写入文件时:
f = open("J:\\111.txt", "w+")
f.write(u"\u0638".encode('utf-16'))
f.close()
十六进制看起来像:FF FE 38 06 当我将这样的字符串打印到标准输出时,我会看到:'\xff\xfe8\x06'。
问题: 输出到stdout的字符串中\x38在哪里?也就是说为什么输出到stdout的字符串不是'\xff\xfe\x38\x06'?
如果我将字符串写入文件两次:
f = open("J:\\111.txt", "w+")
f.write(u"\u0638".encode('utf-16'))
f.write(u"\u0638".encode('utf-16'))
f.close()
文件中的十六进制表示包含字节顺序标记(BOM)\xff\xfe 两次:FF FE 38 06 FF FE 38 06
请问有什么技巧可以避免在 UTF-16 编码的字符串中写入 BOM?
请您参考如下方法:
ASCII 字符 8 有十六进制表示 0x38。所以你的字符串:
\xff\xfe8\x06
是四个 字节长。以空格分隔,字节为:
\xff \xfe 8 \x06
Python 对不表示可打印 ASCII 字符的字节使用 \x 表示法。
