编码测试
提供 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: 最常见;大多数编程语言的默认编码。
- UTF-8 BOM: 推荐用于在 Excel 中打开日文 CSV。前三个字节为 EF BB BF。
- Shift_JIS: Windows 环境广泛使用;部分字符(如〜、−)可能出问题。
- CP932: Shift_JIS 的扩展版。支持髙、﨑等机种依赖字符。
📖 常见的坑
同一内容以 UTF-8(含 / 不含 BOM)、Shift_JIS、CP932 等多种字符编码写出的文件,一套即可确认读取端能正确处理哪些。但「没乱码」不等于「判定成功」,碰巧猜对是会发生的。
| 情形 | 会发生什么 | 怎么处理 |
|---|---|---|
| 用 Excel 打开就乱码 | Excel 会把不带 BOM 的 UTF-8 CSV 按操作系统区域设置(日文 Windows 即 CP932)来读。文件本身没问题,问题在读法。 | 给 Excel 用的 CSV 请以 带 BOM 的 UTF-8(EF BB BF)写出。用这份列表把带 / 不带 BOM 都试一遍,看哪种会乱。 |
| 以为是 Shift_JIS,其实是 CP932 | CP932 是微软在 Shift_JIS 基础上加入 ① ㈱ Ⅲ 等机种依存字符的扩展。严格的 Shift_JIS 解码器遇到它们就会抛异常。 |
把日文 Windows 导出的 CSV 一律当作 CP932,并显式指定该编解码器(PHP 用 SJIS-win,Python 用 cp932)。 |
| 交给自动判定,短行就判错了 | mb_detect_encoding 与 chardet 是统计性推测。只有几十字节的行、或纯 ASCII 的行,原理上无从判断。 |
可以的话,不要猜,让用户选择。对于已经乱掉的文本,用文字乱码修复列出候选再挑选更为可靠。 |
只是用错误编码读取还能还原,一旦以那种状态重新保存就回不来了。字符变成替换符(U+FFFD)或 ? 时,原始字节已经消失。导入流程中把转换前的原始数据留一份,就还有救。