4

我有一个 3rd 方应用程序,它读取 utf-16-le 的 Unicode 文件。出于某种原因,它必须有一个 BOM,否则它不会读取文件。

我在编写这种编码的输出文件时遇到了很多困难,所以我想我会在这里为可能遇到相同问题的其他人记录我的解决方案。

import codecs

mytext = "Help me"

with open("c:\\temp\\myFile.txt", 'w') as f:
    f.write(codecs.BOM_UTF16_LE)
    f.write(mytext.encode('utf-16-le'))

我被以下线程中 选择的“正确答案”</a>严重误导了。

write('\ufeff')

不将所需的 BOM 标记写入文件(至少它不适合我使用 Python 2.7)你需要

write('\xff\xfe')

我没有足够的声誉来发布它,所以我发布了我自己的 添加 BOM(unicode 签名),同时在 python 中保存文件

我认为这与UCS-2 Little Endian, Java中的 Java Write text file 中的问题完全相同

4

1 回答 1

6
import codecs

mytext = "Help me"

with open("c:\\temp\\myFile.txt", 'w') as f:
    f.write(codecs.BOM_UTF16_LE)
    f.write(mytext.encode('utf-16-le'))
于 2013-08-14T18:23:32.103 回答