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

Python打开Fluke SmartView导出的CSV文件出现乱码如何解决

问题原因

你遇到的乱码是编码不匹配导致的:

  • Fluke SmartView导出的CSV默认使用UTF-16 LE(小端UTF-16)编码,文件开头的ÿþ就是该编码的BOM(字节顺序标记),每个可见字符后跟随的\x00是UTF-16用2字节存储ASCII字符的典型特征。
  • 直接调用open()时Python默认使用系统默认编码(通常为GBK/UTF-8)解码,解码规则不匹配就会输出乱码。
  • 你用Excel打开另存的操作,实际是Excel自动将文件编码转换为了常用的ANSI/UTF-8编码,因此后续读取就恢复正常。

解决方案

不需要提前通过Excel转码,直接在打开文件时指定正确的编码即可正常读取:

方法1:直接指定编码读取

将原有代码修改为如下格式即可:

import csv

g = 'datos/1.81/IR20211103_2275.csv'
# 仅需新增encoding参数指定为utf-16即可正常解码
with open(g, "r", newline="", encoding="utf-16") as f:
    # 直接读取全行
    lines = f.readlines()
    print(lines)
    
    # 如需使用csv.reader读取也可正常运行
    # reader = csv.reader(f)
    # for row in reader:
    #     print(row)

方法2:不确定编码时的通用处理

如果后续遇到其他编码不明确的文件,可以用chardet库自动检测编码:

  1. 先安装依赖库:pip install chardet
  2. 检测编码并读取的代码如下:
import chardet
import csv

g = 'datos/1.81/IR20211103_2275.csv'
# 先读取部分字节检测编码
with open(g, 'rb') as f:
    raw_data = f.read(10000) # 读取前10KB内容足够完成编码检测
    result = chardet.detect(raw_data)
    encoding = result['encoding']

# 用检测到的编码读取文件
with open(g, "r", newline="", encoding=encoding) as f:
    lines = f.readlines()
    print(lines)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:05