如何解决使用Pandas读取CSV文件时的编码错误?
解决pandas读取CSV的编码错误问题
错误原因分析
报错'utf-8' codec can't decode byte 0xff in position 0: invalid start byte,说明文件开头的字节0xff不符合UTF-8编码规则,大概率是文件采用UTF-16编码(带BOM头),UTF-16LE格式的文件开头就是0xff 0xfe字节。
具体解决方案
直接指定UTF-16编码读取
尝试用utf-16或utf-16le编码读取,同时注意路径的转义问题(用双反斜杠或原始字符串):# 方法1:转义路径 df = pd.read_csv("D:\\jihyun0115\\desktop\\dataframe01.csv", encoding='utf-16') # 方法2:原始字符串路径 df = pd.read_csv(r"D:\jihyun0115\desktop\dataframe01.csv", encoding='utf-16le')自动检测文件编码
用chardet库检测文件的真实编码:- 先安装chardet:
pip install chardet - 运行检测代码:
import chardet with open(r"D:\jihyun0115\desktop\dataframe01.csv", 'rb') as f: detect_result = chardet.detect(f.read()) print("检测到的编码:", detect_result['encoding']) - 用检测出的编码替换
encoding参数即可。
- 先安装chardet:
手动转换文件编码
如果上述方法都无效,用文本编辑器(如Notepad++)打开文件:- 查看当前编码:点击顶部菜单「编码」,查看当前选中的编码;
- 转换编码:选择「编码」→「转换为UTF-8」(或其他兼容编码),保存后再用pandas读取。
内容的提问来源于stack exchange,提问作者Chloe Baek
相关产品推荐
相关产品推荐

