字符集转换与乱码修复
按指定源编码重新解读字节,修复 UTF-8 与 GBK 不匹配导致的中文乱码。
字符集转换
全部在浏览器内完成,内容不上传。乱码修复通常是把「看起来是乱码的文本」按错误编码重新解读。
乱码是怎么产生的
编码问题本质上是同一段字节被用不同的规则解读。UTF-8 里一个汉字占三个字节,GBK 里占两个。如果一段 GBK 字节被当作 UTF-8 解读,每个字节都会被当成不完整的字符,结果就是成片的问号或方块;反过来把 UTF-8 字节当 GBK 读,则会得到一串看不懂的汉字组合。
所以修复乱码的思路很直接:找出当初用的是哪种编码,再用那种编码重新解读这段字节,最后转成目标编码。关键在于不要在中途做二次编码,很多「越修越乱」的情况都是在已损坏的文本上反复转码造成的。
常见场景
- 老系统导出的 CSV 在 Excel 里打开是乱码,通常是 GBK 与 UTF-8 不匹配
- 数据库迁移后中文变成问号,说明目标库字符集不支持原字符
- 接口返回的中文乱码,需要确认响应头里的 charset 声明与实际编码是否一致
- 日志文件跨平台查看出现乱码,Windows 默认 GBK,Linux 默认 UTF-8
编码对照
| 编码 | 中文占用 | 典型环境 | 说明 |
|---|---|---|---|
| UTF-8 | 3 字节 | Web、Linux、现代系统 | 变长编码,兼容全部 Unicode 字符 |
| GBK | 2 字节 | Windows 中文、老系统 | GB2312 的扩展,收录字符更多 |
| GB2312 | 2 字节 | 早期中文系统 | 收录常用汉字,生僻字会丢失 |
| Big5 | 2 字节 | 港澳台地区 | 繁体中文编码 |
| UTF-16 | 2 或 4 字节 | Windows 内部、Java 字符串 | 需区分字节序 |
常见问题
为什么转出来还是乱码?▼
说明源编码选错了。修复乱码的关键是找到字节原本的编码,而不是反复转换。可以逐个试 GBK、UTF-8、Big5,哪个能解出通顺中文,哪个就是原编码。
Excel 打开 CSV 中文乱码怎么办?▼
Excel 默认按系统本地编码解析,中文 Windows 下是 GBK。如果文件是 UTF-8,需要在导出时加 BOM 头,或改用「数据 → 从文本/CSV」导入并手动指定编码。
UTF-8 和 GBK 能无损互转吗?▼
单向不行。GBK 能表示的字符 UTF-8 都能表示,但从 GBK 转到 UTF-8 后无法自动还原原始编码类型;反过来 UTF-8 里的生僻字、emoji 在 GBK 中没有对应字符,转换时会丢失。
为什么浏览器里只能转成 UTF-8?▼
浏览器的编码接口只保证 UTF-8 编码能力,其他编码的解码支持较完整,编码支持不完整。要生成 GBK 字节需要在服务端处理,本工具会把解码结果和 UTF-8 字节一并给出,方便核对。
数据库迁移时怎么避免乱码?▼
迁移前先确认源库和目标库的字符集,连接串里显式指定编码,不要依赖默认值。迁移后抽样校验中文、生僻字和 emoji 三类内容,这三类最容易出问题。