Python在文件开头添加Unicode字符

时间:2016-10-18 08:28:34

标签: c# python unicode encoding ironpython

我使用脚本来更新.NET项目的每个AssemblyVersion.cs文件的版本。它总是很完美,但由于我的PC格式,它在编辑的每个.cs文件的开头都添加了unicode字符。像这样:

using System.Reflection;
using System.Runtime.InteropServices;
using System.Security;

我使用此代码打开文件:

with open(fname,  "r") as f:
    out_fname = fname + ".tmp"
    out = codecs.open(out_fname, "w", encoding='utf-8')
    textInFile=""
    for line in f:
        textInFile += (re.sub(pat, s_after,line))
    out.write(u'\uFEFF')
    out.write(textInFile)
    out.close()
os.remove(fname)
os.rename(out_fname, fname)

我也尝试使用io代替codecs,但没有任何改变。{/ p>

对其他队友' PC使用相同的配置(Win10和IronPython 2.7)。

我可以尝试解决此问题?我在哪里可以找到问题?

由于

1 个答案:

答案 0 :(得分:0)

您在文件系统中的文件似乎正在使用ISO-8859-1编码,而您在每个文件的开头添加UT8 BOM标记。

在你的代码完成它的工作后,你会得到一个UTF-8 BOM + ISO-8859-1 meta的文件。

我会在使用Notepad ++(或任何其他编辑器)进行修改之前检查输入文件的编码,看看我描述的场景是否有效。如果是,您将需要使用不同的编码读取输入文件,以避免元数据:

with open(fname,  "r",  "ISO-8859-1") as f:
    ...