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

标签 python python-2.7 jython

<分区>

我有一个读取 utf-16-le 的 Unicode 文件的第 3 方应用程序。由于某种原因,它必须有 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

最佳答案

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

关于Python 使用 BOM 编写 UCS-2 Little Endian (utf-16-le) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239373/

相关文章:

python - Python中的曲线拟合,需要曲线形状几乎完全匹配,而不是最小化均方差的曲线

python - 无法将循环限制为 21 行

java - 在 htmlunit 中选择下拉菜单

java - 在 Eclipse 中将 python 模块添加到 JAR 类路径

python - Pandas groupby 累计总和

python - 从 DataFrame 中删除零值头行和尾行

python - 有时只读属性

python - 我如何将 NaNs 归因为 means() 但通过多索引

python - 我如何理解 .pyc 文件内容

java - Jython:访问单例 Java 类(静态)