Python 3.6服务器读取CSV文件遇UnicodeDecodeError问题求助
解决Python 3.6读取CSV时的UnicodeDecodeError问题
这个错误很常见,本质是你指定的utf-8编码和文件实际的编码不匹配导致的。给你几个实用的解决办法:
先尝试常见的替代编码打开文件
很多非utf-8编码的文本文件用latin-1或者cp1252(Windows环境常用编码)都能正常读取,这两种是单字节编码,不会出现解码失败的情况。修改你的代码试试:with open(csvfile, 'r', encoding='latin-1') as f: lines = f.readlines()如果能正常读取,再检查内容是否符合预期,没问题的话就可以用这个编码处理后续逻辑。
检测文件的实际编码
要是想精准找到文件的编码,可以用chardet库来检测。先安装库:pip install chardet然后运行这段代码获取编码:
import chardet with open(csvfile, 'rb') as f: # 大文件可以只读取前几KB内容,节省资源 raw_data = f.read(1024) result = chardet.detect(raw_data) print(f"检测到的文件编码:{result['encoding']}")拿到编码结果后,把它替换到
open函数的encoding参数里就行。兜底方案:忽略或替换无效字符
要是你不在乎个别无效字符,也可以用errors参数跳过错误。比如:# 直接忽略无效字符 with open(csvfile, 'r', encoding='utf-8', errors='ignore') as f: lines = f.readlines() # 或者把无效字符替换成? with open(csvfile, 'r', encoding='utf-8', errors='replace') as f: lines = f.readlines()不过这个方法可能会丢失部分字符信息,建议优先用前两种方法找到正确编码。
内容的提问来源于stack exchange,提问作者user552231
相关产品推荐
相关产品推荐

