使用Python从SharePoint下载的CSV文件解码失败求助
遇到UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99这类问题,核心原因是你下载的CSV文件并非UTF-8/UTF-16编码,0x99字节是Windows-1252(兼容ISO-8859-1)编码里的™符号,试试以下方案:
方案1:直接用Windows-1252解码
将解码代码替换为:
csv_content = binary_data.decode('windows-1252')
方案2:自动检测文件编码
如果不确定编码,用chardet库自动识别:
- 先安装库:
pip install chardet
- 修改代码检测并解码:
import chardet with open('book.csv', 'rb') as file: binary_data = file.read() # 检测编码 detect_result = chardet.detect(binary_data) # 用检测出的编码解码 csv_content = binary_data.decode(detect_result['encoding']) print(csv_content)
方案3:容错处理(备选)
如果不需要保留特殊字符,可以忽略或替换无法解码的字节:
# 忽略错误字节 csv_content = binary_data.decode('utf-8', errors='ignore') # 或用?替换错误字节 csv_content = binary_data.decode('utf-8', errors='replace')
另外,如果文件带UTF-8 BOM,可尝试用utf-8-sig解码:
csv_content = binary_data.decode('utf-8-sig')
内容的提问来源于stack exchange,提问作者Gray Anthrax
相关产品推荐
相关产品推荐

