【问题标题】:UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 2483: character maps to <undefined>UnicodeDecodeError:“charmap”编解码器无法解码位置 2483 中的字节 0x81:字符映射到 <undefined>
【发布时间】:2021-04-11 23:13:58
【问题描述】:

我正在解析一个 csv 文件,但出现以下错误

import os
import csv
from collections import defaultdict
demo_data = defaultdict(list)

if os.path.exists("infoed_daily _file.csv"):
    f = open("infoed_daily _file.csv", "rt")
    csv_reader = csv.DictReader(f)
    line_no = 0
    for line in csv_reader:
    line_no +=1
    print(line,line_no)

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 2483: character maps to 
<undefined>

请指教。

谢谢.. -Prasanna.K

【问题讨论】:

  • 可能文件使用的编码不同于utf-8 - 即latin-1cp1250 - 您可能必须在open() 中使用它。您可以在 Google 中查看哪些 char 可能有代码 0x81 以及它可以是哪种编码。
  • 当我运行 b'\x81'.decode('Latin1')b'\x81'.decode('Latin2')b'\x81'.decode('iso8859')b'\x81'.decode('iso8859-2') 时,它运行时不会出现错误 - 因此您的文件可以采用其中一些编码(或类似编码)并且您有使用它open(..., encoding='Latin1')
  • 谢谢大家。我用encoding="latin-1" 效果很好。非常感谢

标签: python


【解决方案1】:

错误可能意味着您的文件编码不同于UTF-8(可能在大多数系统中)在open()中被用作默认值

当我跑步时

 b'\x81'.decode('Latin1') 
 b'\x81'.decode('Latin2') 
 b'\x81'.decode('iso8859') 
 b'\x81'.decode('iso8859-2') 

然后它运行没有错误 - 所以你的文件可以是其中一些编码(或类似的编码),你必须使用它

 open(..., encoding='Latin1')

或类似的。

其他编码列表:codecs: standard encodings

【讨论】:

    【解决方案2】:
    f=open("myfile1.txt",'r')
    print(f.read())
    

    好吧,对于上面的代码,我得到了一个错误: “charmap”编解码器无法解码位置 637 中的字节 0x81:字符映射到 所以我尝试更改文件扩展名的名称并且它有效。 快乐编码 谢谢! 瓦尼

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 2017-02-06
      • 2021-05-06
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      相关资源
      最近更新 更多