【问题标题】:UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 1UnicodeDecodeError:“utf8”编解码器无法解码位置 1 中的字节 0x8e
【发布时间】:2017-02-16 04:07:51
【问题描述】:

这是我在这里的第一篇文章,如果我错过了什么,请原谅。 我的 CSV 文件中有一些数据,我正在尝试将数据导入我的产品并收到 UnicodeDecodeError。我的 csv 文件中有一些法语单词

代码:

open_csv = csv.DictReader(open('filename',''rb))
   for i in open_csv:
   x = find(where={})#mongodb query
   x.something = i.get(row_header)
   x.save()

我收到 UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 1 error while save the data

【问题讨论】:

  • 这是我的代码 open_csv = csv.DictReader(open('filename',''rb)) for i in open_csv: x = find(where={})#mongodb query x.something = i.get(row_header) x.save()
  • 我怀疑这是因为文件不是 UTF-8。尝试使用'mbcs' 解码。
  • 将该代码编辑到您的问题中;作为评论,它几乎无法阅读。
  • @MarkRansom: 或latin-1(ISO 标准)或cp1252(Windows 修改为latin-1),如果它是西欧文本,或者utf-16,如果它是来自 Windows 程序的 Unicode 输出.
  • CP-1252 中的 0x8e 是 Ž;我不希望在法语文本中出现这种情况。它在 ISO-8859-1 的 C1 控制代码范围内,所以这似乎也不正确。在 CP-863 中是 À,这可能更有可能。 @Kashyap 该文件中的第一个重音字母应该是什么样的?

标签: python csv unicode


【解决方案1】:

我建议你试试下面的代码:

 import codecs
 open_csv = csv.DictReader(codecs.open('filename','rb'))
 for i in open_csv:
     x = find(where={})
     x.something = i.get(row_header)
     x.save()

我在 Python 3.x 中工作,但如果您使用的是 2.x,这也应该在 2.x 中工作。

【讨论】:

  • Python 2 和 3 之间最大的区别之一是它处理 Unicode 的方式。我不会假设任何事情
  • @sleepcoffeedelight :我尝试使用编解码器,但仍然遇到同样的错误。
猜你喜欢
  • 2015-12-25
  • 2016-08-03
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多