Python将行写入UCS-2 LE BOM编码的文本文件

Python将行写入UCS-2 LE BOM编码的文本文件,python,encoding,ucs2,Python,Encoding,Ucs2,我在Python3.7中有一个文本字符串数组 现在我想把它们都写到一个文本文件中。问题是,该文本文件必须编码UCS-2 LE BOM(这就是它在Notepad++中对其编码的说明),否则该文件将无法在进一步处理中工作 如何在字符串保持可读性的情况下,以这种编码将文本字符串写入文件 with open(textpath, "w", encoding='utf-16-le') as f: for line in newlines: f.write(line) 这不起

我在Python3.7中有一个文本字符串数组

现在我想把它们都写到一个文本文件中。问题是,该文本文件必须编码UCS-2 LE BOM(这就是它在Notepad++中对其编码的说明),否则该文件将无法在进一步处理中工作

如何在字符串保持可读性的情况下,以这种编码将文本字符串写入文件

    with open(textpath, "w", encoding='utf-16-le') as f:
    for line in newlines:
        f.write(line)

这不起作用,因为它会生成乱七八糟的文本…

尝试编写一个明确的BOM表:

with open(textpath, "w", encoding='utf-16-le') as f:
    f.write('\ufeff')
    for line in newlines:
        f.write(line)
        # Perhaps you also need to add a newline after each line?
        f.write('\n')

显然,如果您的行已经有换行符,请还原上次添加的内容。

您确定Notepad++知道它在做什么吗?您是否尝试过从一开始就编写明确的BOM表?您知道UCS-2和UTF-16之间的区别(但是,除非您试图使用基本多语言平面之外的最新表情符号,否则这应该无关紧要;即使如此,文本的其余部分也应该保持清晰)?您能否回答以下问题,例如,将文件的前10个左右字节显示为十六进制转储,告诉我们他们希望代表什么文本?另请参阅以获取背景和调试提示。谢谢,我的文件现在被识别为UCS2-LE,但是,现在我的文件开头有两个字符:ÿþ-它们不能由.exe处理,因此系统崩溃?通常,该文件以¨开头,听起来好像您正在用不理解UCS-2的内容检查该文件。澄清你的问题的要求仍然有效。