【问题标题】:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte error in python while reading a csv fileUnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte error in python while reading a csv file
【发布时间】:2020-01-31 14:50:20
【问题描述】:
StopWords = pd.read_csv('stopwords.csv',encoding='UTF-8', quotechar='|',names=['StopWords'])

我正在尝试读取包含波斯语文本的 CSV 文件,这是我得到的错误:

UnicodeDecodeError: 'utf-8' 编解码器无法在位置解码字节 0xff 0:无效的起始字节

【问题讨论】:

  • 在十六进制编辑器中打开文本文件(HxD 在 Windows 上是一个不错的选择)并使用第一行文本和相关字节更新您的问题。

标签: python byte-order-mark


【解决方案1】:

如果没有看到文件的二进制内容,很难猜测实际编码,但 UTF-8,无论有无 BOM(字节顺序标记)都不能以 0xFF 开头。

如果它以 0xFF 开头,那么这表明它可能在 Little Endian UTF-16 到 UTF-32 中,这是唯一具有以 0xFF 开头的字节顺序标记的 Unicode 序列化。

https://en.wikipedia.org/wiki/Byte_order_mark 给出了一些解释。

也有可能是波斯语特有的字符集。如果 Unicode 选项可用,则应避免使用国家字符集来生成源 CSV 文件。

【讨论】:

  • 谢谢。在我的情况下,正确的编码是 UTF-16,基于您粘贴的 BOM Wikipedia 文章。
猜你喜欢
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 2021-11-24
  • 2022-09-26
  • 2020-12-26
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
相关资源
最近更新 更多