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

Python读取含塞尔维亚拉丁字母的CSV时遇UnicodeDecodeError的解决方法

解决CSV文件塞尔维亚拉丁字母解码错误的方案

核心原因

你遇到的UnicodeDecodeError是因为Python默认使用了系统默认编码(Windows下通常是cp1252这类charmap编码),这类编码无法覆盖塞尔维亚拉丁字母对应的字节。完全不需要手动替换字符,直接指定正确的编码就能解决问题。

具体解决方法

1. 指定UTF-8编码读取

如果CSV文件是用UTF-8编码保存的(现在多数文件采用该编码),在open()函数中直接指定encoding='utf-8'即可:

import csv

with open('your_file.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        # 处理行数据
        print(row)

2. 尝试Windows-1250编码

如果UTF-8不生效,塞尔维亚地区常用的windows-1250编码原生支持这些特殊字母,可以试试这个:

import csv

with open('your_file.csv', 'r', encoding='windows-1250') as f:
    reader = csv.reader(f)
    # 后续数据处理逻辑

3. 无法确定编码时的排查方法

要是不知道文件的具体编码,可以用chardet库检测:
首先安装库:

pip install chardet

然后执行检测代码:

import chardet

with open('your_file.csv', 'rb') as f:
    detection_result = chardet.detect(f.read())
    
print(detection_result['encoding'])  # 输出检测到的编码,比如'utf-8'或'windows-1250'

拿到编码后,替换前面代码中的encoding参数即可。

4. 兜底方案(不推荐)

如果实在无法确定正确编码,又不想中断程序,可以用errors参数控制解码行为:

  • errors='ignore':直接跳过无法解码的字符
  • errors='replace':用�替换无法解码的字符
import csv

with open('your_file.csv', 'r', encoding='utf-8', errors='replace') as f:
    reader = csv.reader(f)
    # 后续操作

注意:这个方法会丢失或损坏数据,仅作为临时替代,优先使用前三种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:07:09