将文件从cp1251转换为utf8

时间:2013-11-12 14:40:18

标签: python encoding cp1251

我看到了类似的问题,但对他们的回答没有帮助。 这段代码:

with codecs.open( sourceFileName, "r",  sourceEncoding, ) as sourceFile:
    contents = sourceFile.read()

with codecs.open( sourceFileName, "w", "utf-8") as targetFile:
    if contents:
        targetFile.write(contents)

返回错误“UnicodeDecodeError:'charmap'编解码器无法解码位置1中的字节0x98:字符映射到未定义”

此代码:

with open(sourceFileName, "rb") as sourceFileBin:
    contents = sourceFileBin.read().decode(sourceEncoding)

with open(sourceFileName, "wb") as targetFile:
    targetFile.write( contents.encode("unt-8"))

产生相同的错误。麻烦的符号是西里尔字母'И'(据我所知,它由'0xc8'代表'0x98')。我正在Windows上使用python 2.7。

UPD:事实证明,原始文件编码可能不是cp1251,这些错误可能是文本编辑器中的错误导致的。但是,我的所有文本都可以正确读取此文件。 然后我正在寻找一些解决方法,因为没有这个特殊字母的文件被正确转换。

1 个答案:

答案 0 :(得分:3)

我发现由于某种错误(或者只是我的愚蠢),我试图转换已转换的文件。

我很遗憾浪费你的时间