如何更改文件中的字符编码

时间:2015-06-11 16:26:35

标签: python encoding utf-8

我一直在阅读有关编码的内容,我仍然不确定我是否完全绕过它。我有一个编码为ANSI的文件,里面有“Solluções”字样。我想将文件转换为UTF-8,但每当我这样做时都会更改字符。

代码:

with codecs.open(filename_in,'r') 
   as input_file, 
   codecs.open(filename_out,'w','utf-8') as output_file:
   output_file.write(input_file.read())

结果:“SolluçÃμes”

我认为这是一个愚蠢的问题,但我现在处于僵局。我试着在写入之前对文件中的各个数据调用encode('utf-8')无效,所以我猜这也不正确......我感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

这个类似问题的SO answer指定了文件的输入类型,如codecs.open(sourceFileName, "r", "your-source-encoding")。如果没有它,如果它无法检测原始编码,python可能无法正确解释字符。

关于编码的警告:大多数人谈论ANSI是指一个Windows代码页;您可能真的在CP(代码页)1252中有一个文件,这几乎与ISO-8859-1(拉丁文1)完全不同。如果是,请使用cp-1252代替latin-1作为your-source-encoding

答案 1 :(得分:1)

你可以尝试

  from codecs import encode,decode
  with open(filename_out,"w") as output_file:
       decoded_unicode = decode(input_file.read(),"cp-1252") #im guessing this is what you mean by "ANSI"
       utf8_bytes = encode(decoded_unicode,"utf8")
       output_file.write(utf8_bytes)