【发布时间】:2012-06-27 04:28:57
【问题描述】:
我在 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 的技术是什么?
【问题讨论】:
标签: python string file utf-16 utf