Python UnicodeDecodeError:(';utf-8';编解码器)在Pandas中读取dta文件时出错

Python UnicodeDecodeError:(';utf-8';编解码器)在Pandas中读取dta文件时出错,python,pandas,utf-8,stata,Python,Pandas,Utf 8,Stata,我试图用Pandas打开一个dta文件,但得到一个UnicodeDecodeError: >>> import pandas as pd >>> pd.read_stata('/some/stata/file.dta',encoding='utf8') # I've tried 'utf8', "ISO-8859-1", 'latin1', 'cp1252' and not putting in anything, same error. Traceback

我试图用Pandas打开一个
dta
文件,但得到一个
UnicodeDecodeError

>>> import pandas as pd
>>> pd.read_stata('/some/stata/file.dta',encoding='utf8') # I've tried 'utf8', "ISO-8859-1", 'latin1', 'cp1252' and not putting in anything, same error.

Traceback (most recent call last):
  File "<pyshell#123>", line 1, in <interactive>
    pd.read_stata(path,encoding='cp1252')
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 161, in read_stata
    chunksize=chunksize, encoding=encoding)
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 960, in __init__
    self._read_header()
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 980, in _read_header
    self._read_new_header(first_char)
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 1056, in _read_new_header
    self.vlblist = self._get_vlblist()
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 1127, in _get_vlblist
    for i in range(self.nvar)]
  File "/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py", line 1269, in _decode
    return s.decode('utf-8')
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x93 in position 18: invalid start byte
>>将熊猫作为pd导入
>>>pd.read_stata('/some/stata/file.dta',encoding='utf8')#我试过'utf8','ISO-8859-1','latin1','cp1252',但没有输入任何内容,同样的错误。
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
pd.read_stata(路径,编码='cp1252')
文件“/usr/local/lib/python2.7/dist packages/pandas/io/stata.py”,第161行,以read_stata格式
chunksize=chunksize,encoding=encoding)
文件“/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py”,第960行,在__
self.\u read\u header()
文件“/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py”,第980行,在读取头中
self.\u read\u new\u头(第一个字符)
文件“/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py”,第1056行,在“读取”和“新建”标题中
self.vlblist=self.\u get\u vlblist()
文件“/usr/local/lib/python2.7/dist-packages/pandas/io/stata.py”,第1127行,在
对于范围内的i(self.nvar)]
文件“/usr/local/lib/python2.7/dist packages/pandas/io/stata.py”,第1269行,在解码中
返回s.decode('utf-8')
文件“/usr/lib/python2.7/encodings/utf_8.py”,第16行,解码
返回编解码器.utf_8_解码(输入,错误,真)
UnicodeDecodeError:“utf8”编解码器无法解码位置18中的字节0x93:无效的开始字节
该文件包含非ASCII字符,由其他人保存(可能在Windows或Mac上)R可以打开文件并将其保存为
csv
,然后我可以正常读取,但如果能够使用Python完成所有操作,那就太好了

对于encoding参数,在这里的其他线程之后,我尝试了“utf8”、“ISO-8859-1”、“latin1”、“cp1252”,并且没有输入任何内容。然而,我总是得到完全相同的错误

知道发生了什么事吗?我能做什么


我在Ubuntu 14.04上使用Python2.7,以防万一。

在Github上有一个补丁提交给master,应该以
0.25版本发布

请参阅有关此问题的详细信息

要进行临时修复,请将pandas.io.stata
1334
行从

return s.decode('utf-8')


不幸的是,在某些情况下,Stata或其他软件将允许输入一些非UTF-8字符。据推测,您使用的是一个
dta
文件,其版本为
118
,由于这些文件应该是纯
UTF-8
,熊猫会忽略编码
kwarg

“UTF”、“UTF-8”、“iso-8859-1”工作utf8'没有。使用Python2.7或3.5,以及0.19.1。你能检查一下你的pandas版本吗(
pd.\uuuuuu version\uuuuuu
)@JulienMarrec刚刚将pandas从0.18.1更新到0.20.3-同样的错误仍然存在。看起来四年前就有这方面的报道,但对我来说仍然不起作用。
return s.decode('latin-1')