使用Pandas导入CSV时如何定位编码错误位置?
解决pd.read_csv()的UTF-8解码错误
一、错误信息解读
这个错误直白来说:你用UTF-8编码规则读取CSV文件,但文件里第214567个字节是0x93,这不符合UTF-8的解码规范,导致读取失败。0x93这个字节在Windows-1252编码里对应左弯引号(“),基本可以确定你的CSV文件实际是用Windows-1252、GBK这类编码保存的,而非UTF-8。
二、位置的准确含义
这里的position 214567指的是字节位置,不是字符数。不同编码下单个字符占用的字节数不同:比如UTF-8里一个中文占3字节,Windows-1252里所有字符都占1字节。别直接把它当成第214567个字符去找,得区分字节和字符的差异。
三、用记事本定位问题字节
- 打开CSV文件后,按
Ctrl+G调出「转到」窗口 - 先确认文件编码:点击「文件」→「另存为」,查看编码下拉框。如果显示「ANSI」(对应Windows-1252),字节数和字符数基本一致,直接输入214567跳转,附近的特殊符号(比如弯引号)就是问题根源;如果是UTF-8编码,直接跳转字符位置不准,建议先把文件转成ANSI再找,或者直接搜索特殊符号。
- 跳转后就能看到引发错误的特殊字符,一般是弯引号、特殊标点这类非标准ASCII字符。
四、用Excel定位问题
- 直接打开CSV时,如果Excel识别错了编码,就走「数据」→「自文本/CSV」路径,手动选择Windows-1252或GBK编码打开,避免乱码。
- 打开后按
Ctrl+F查找特殊符号(比如左弯引号“),逐个排查就能找到位置;要是知道大概在哪一行,直接滚动过去找也很方便。
快速绕开错误的方法
其实不用费劲找字符,直接在pd.read_csv()里指定正确编码就行,比如:
pd.read_csv("你的文件.csv", encoding="windows-1252")
或者根据文件实际编码换成encoding="gbk",一般都能直接读取成功。
内容的提问来源于stack exchange,提问作者we_are_all_in_this_together
相关产品推荐
相关产品推荐

