Python用BOM编写UCS-2 Little Endian(utf-16-le)文件

时间:2013-08-14 18:22:14

标签: python python-2.7 jython

我有一个第三方应用程序,它读取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'))

我在下面的帖子中被选中的‘correct answer’严重误导了。

write('\ufeff')

不会将所需的BOM标记写入文件(至少对我来说不是使用Python 2.7) 你需要

write('\xff\xfe')

我没有足够的声誉发帖,所以我发布了自己的 Adding BOM (unicode signature) while saving file in python

我认为这与Java完全相同 Write text file in UCS-2 Little Endian, Java

1 个答案:

答案 0 :(得分:1)

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'))