我使用脚本来更新.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)。
我可以尝试解决此问题?我在哪里可以找到问题?
由于
答案 0 :(得分:0)
您在文件系统中的文件似乎正在使用ISO-8859-1编码,而您在每个文件的开头添加UT8 BOM标记。
在你的代码完成它的工作后,你会得到一个UTF-8 BOM + ISO-8859-1 meta的文件。
我会在使用Notepad ++(或任何其他编辑器)进行修改之前检查输入文件的编码,看看我描述的场景是否有效。如果是,您将需要使用不同的编码读取输入文件,以避免元数据:
with open(fname, "r", "ISO-8859-1") as f:
...