You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未知Unicode编码读取OneDrive中CSV失败,求有效解决方法

解决方案

直接指定正确编码与分隔符

根据你提到的Notepad++检测结果,文件编码为UTF-16 Little Endian,Pandas支持该编码的参数为utf-16-le(若文件带BOM,也可直接用utf-16,Pandas会自动处理)。结合实际分隔符;,修改代码如下:

import pandas as pd

def read_csv(path):
    try:
        return pd.read_csv(
            path,
            encoding='utf-16-le',  # 或尝试'utf-16'
            sep=';',
            header=1  # 保留原header设置,根据文件实际结构调整
        )
    except Exception as e:
        print(f"读取失败: {e}")
        raise

问题根源解释

你之前用\t作为分隔符能得到正确行数但只有1列,是因为编码识别错误导致的假象:

  • 当chardet误判UTF-16文件的编码时,Pandas用错误编码读取,原本的分号;会被解析成乱码或无法识别的字节组合,无法作为列分隔符;
  • 而文件中的换行符在错误编码下仍能被识别,所以行数正确,但所有内容被挤到1列中。

验证编码正确性

如果不确定编码是否匹配,可先读取少量内容验证:

with open(path, 'rb') as f:
    # 读取前100字节并解码
    print(f.read(100).decode('utf-16-le'))

若输出内容正常显示且能看到分号分隔符,说明编码和分隔符设置正确。

内容的提问来源于stack exchange,提问作者Stefan Bongers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:20:02