首页 > 解决方案 > “charmap”编解码器无法解码位置 5697 中的字节 0x9d:字符映射到

问题描述

为此看到了其他线程,常见的解决方案是在打开/写入文件时显式指定编码器(UTF-8)。另一个是忽略错误。我都试过了,但还是不行。

标签: pythonpandas

解决方案


该文件应包含以 UTF-8 或 latin1 编码的文本以外的其他内容,因为0x9d单独不是有效的 UTF-8,也不是 latin1。

但它可以是许多其他编码。例如它可能是 CP861,在这种情况下它是一个Ø. 但是我随机取了CP861,它可以是任何其他对0x9d有意义的编码。

它也可能是您的文件中的错误,或者包含文本以外的其他内容的文件(我敢打赌,在位置 5697 之前它会失败)。

如果您不介意向我们提供更多信息,它可能会有所帮助,也许:

with open(source, "rb") as from_A:
    print(from_A.read()[5697-10, 5697+10])

此外,如果您真的不需要文件的内容,您可以使用bopen 标志跳过解码和重新编码:

with open(source, mode='rb') as from_A, open(destination, mode='wb') as to_A:

如果你只是想复制文件,你可以使用shutil

shutil.copyfile(source, destination)

推荐阅读