跳到内容

编码测试

提供 UTF-8(无 BOM)、UTF-8 带 BOM、Shift_JIS、CP932 各种字符编码的 CSV 测试文件,免费下载,用于验证乱码与导入功能。

UTF-8(无 BOM) 编码的 CSV 测试文件

utf8.csv / 659 B

UTF-8(含 BOM) 编码的 CSV 测试文件

utf8-bom.csv / 662 B

Shift_JIS 编码的 CSV 测试文件

sjis.csv / 514 B

CP932(含机种依赖字符) 编码的 CSV 测试文件

cp932.csv / 518 B

字符编码测试的重要性

包含日文等非 ASCII 文本的 CSV 文件常因编码不匹配而出现乱码。例如 Excel 推荐 BOM UTF-8,各工具支持情况不同。

使用这些测试文件验证您的 CSV 导入功能和文本处理库能否正确处理各种编码。

常见编码的主要特征

📖 常见的坑

同一内容以 UTF-8(含 / 不含 BOM)、Shift_JIS、CP932 等多种字符编码写出的文件,一套即可确认读取端能正确处理哪些。但「没乱码」不等于「判定成功」,碰巧猜对是会发生的。

情形 会发生什么 怎么处理
用 Excel 打开就乱码 Excel 会把不带 BOM 的 UTF-8 CSV 按操作系统区域设置(日文 Windows 即 CP932)来读。文件本身没问题,问题在读法。 给 Excel 用的 CSV 请以 带 BOM 的 UTF-8EF BB BF)写出。用这份列表把带 / 不带 BOM 都试一遍,看哪种会乱。
以为是 Shift_JIS,其实是 CP932 CP932 是微软在 Shift_JIS 基础上加入 机种依存字符的扩展。严格的 Shift_JIS 解码器遇到它们就会抛异常。 把日文 Windows 导出的 CSV 一律当作 CP932,并显式指定该编解码器(PHP 用 SJIS-win,Python 用 cp932)。
交给自动判定,短行就判错了 mb_detect_encodingchardet统计性推测。只有几十字节的行、或纯 ASCII 的行,原理上无从判断。 可以的话,不要猜,让用户选择。对于已经乱掉的文本,用文字乱码修复列出候选再挑选更为可靠。

只是用错误编码读取还能还原,一旦以那种状态重新保存就回不来了。字符变成替换符(U+FFFD)或 ? 时,原始字节已经消失。导入流程中把转换前的原始数据留一份,就还有救。