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

如何使用Python将CSV文件编码从UTF-8转换为Shift-JIS

可行性说明

该需求完全可实现,Python标准库自带的编码处理、CSV读写模块就能完成整个转换流程,无需安装额外第三方依赖。

实现方案

前置注意事项

  • 不建议直接以二进制模式读取文件后粗暴转码写入,这种方式会破坏CSV内带引号、内嵌换行的字段结构,大概率导致文件格式损坏
  • 标准Shift-JIS编码的字符覆盖范围有限,部分emoji、罕见汉字、特殊符号没有对应编码,需要提前配置错误处理规则避免程序中断
  • 如果转码后文件在日系软件(比如日本区Excel)中打开仍有乱码,可以尝试将编码替换为cp932(微软扩展版Shift-JIS,字符兼容性更强)

基础实现代码(无特殊字符场景)

这个版本适合源文件内所有字符都在Shift-JIS编码覆盖范围内的场景,逐行读写内存占用极低,支持GB级大文件转换:

import csv

# 替换为你的实际文件路径
source_path = "utf8编码源文件.csv"
target_path = "shiftjis编码目标文件.csv"

# 以UTF-8编码读取源文件
with open(source_path, "r", encoding="utf-8", newline="") as f_in:
    reader = csv.reader(f_in)
    # 以Shift-JIS编码写入目标文件
    with open(target_path, "w", encoding="shift_jis", newline="") as f_out:
        writer = csv.writer(f_out)
        for row in reader:
            writer.writerow(row)

兼容特殊字符的容错版本

如果运行代码时抛出UnicodeEncodeError,说明源文件包含Shift-JIS无法识别的字符,可以在写入文件时配置错误处理规则,按需选择以下任意一种错误处理策略替换原有open参数:

  • encoding="shift_jis", errors="replace":无法编码的字符统一替换为?
  • encoding="shift_jis", errors="ignore":直接跳过无法编码的字符,不写入目标文件
  • encoding="shift_jis", errors="backslashreplace":将无法编码的字符转为Python转义字符串留存,方便后续排查

注意:读写CSV时必须传入newline=""参数,这是Python csv模块的官方要求,否则生成的文件会出现多余空行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:16:00