python - “charmap”编解码器无法解码位置 5697 中的字节 0x9d:字符映射到
问题描述
为此看到了其他线程,常见的解决方案是在打开/写入文件时显式指定编码器(UTF-8)。另一个是忽略错误。我都试过了,但还是不行。
解决方案
该文件应包含以 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])
此外,如果您真的不需要文件的内容,您可以使用b
open 标志跳过解码和重新编码:
with open(source, mode='rb') as from_A, open(destination, mode='wb') as to_A:
如果你只是想复制文件,你可以使用shutil
:
shutil.copyfile(source, destination)
推荐阅读
- python - pyaes(需要一个类似字节的对象,而不是'str')
- snowflake-cloud-data-platform - SAP Business Objects 4.1 版本是否支持雪花云数据库?
- python - 如何使用 cli 或 boto3 列出 SQS 队列订阅的 SNS 主题?
- algorithm - 验证 BST
- java - Google 日历 API:com.google.api.client.googleapis.json.GoogleJsonResponseException
- mysql - Flutter 将 MySQL 数据库实时连接到 Socket
- tcl - 如何打印 TCL 运行命令
- bash - 在 bash 脚本中 STDOUT 到 LOG,STDERR 到 LOG 和控制台
- php - HandshakeException:握手期间连接终止 - laravel api with flutter
- regex - 使用正则表达式从 html 页面抓取电子邮件地址