您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在CP-1252 / ANSI读取上的Python 3扼流圈

在CP-1252 / ANSI读取上的Python 3扼流圈

在Windows-1252(aka cp1252)中未分配位置0x81。它在Latin-1(aka ISO 8859-1)中分配给U + 0081 HIGH OCTET PRESET(HOP)控制字符。我可以像这样在Python 3.1中重现您的错误

>>> b'\x81'.decode('cp1252')
Traceback (most recent call last):
  ...
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 0: character maps to <undefined>

或带有实际文件

>>> open('test.txt', 'wb').write(b'\x81\n')
2
>>> open('test.txt').read()
Traceback (most recent call last):
  ...
UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 0: unexpected code byte

现在将此文件视为Latin-1,您可以传递encoding参数,例如codeape建议:

>>> open('test.txt', encoding='latin-1').read()
'\x81\n'

注意Windows-1257和Latin-1编码之间存在差异,例如Latin-1没有“智能引号”。如果您正在处理的文件是文本文件,请问自己\x81在其中执行的操作。

python 2022/1/1 18:46:31 有341人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶