乱码修复 (修复损坏的 UTF-8)
文本
乱码(mojibake)是当 UTF-8 字节被错误地按单字节编码读取时产生的损坏文本 — 几乎总是 Windows-1252,即 Windows 的旧版默认。é 变成 é,弯引号变成 ’,不换行空格变成  ,表情符号变成像 😀 这样的四个怪字符。本工具将其逆转:把每个字符重新编码回它来自的 Windows-1252 字节,再把这些字节按 UTF-8 解码,从而还原原文。对二次损坏的文本会反复应用修复,且设计上安全 — 正确编码的文本(含非拉丁文字)逆转后无法构成有效 UTF-8,因此会被原样保留而非破坏。粘贴损坏文本并复制修复后的版本。全部在本地运行;不上传任何内容。
—
已修复 · 1 趟修复完成
逆转被当作 Windows-1252 误解码的 UTF-8。正确文本(任何文字)会被判定为有效并原样保留。
使用方法
- 粘贴乱码文本。
- 查看修复后的输出 — 工具会显示用了几趟,或无需修复。
- 复制修正后的文本。
常见问题
- 乱码的成因是什么?
- 当以 UTF-8 保存的文本之后被用另一种单字节编码 — 多为 Windows-1252 或 ISO-8859-1 — 读取时就会发生。每个非 ASCII 字符以两个或更多 UTF-8 字节保存,逐字节读取这些字节会产生错误字符:é(两字节)显示为两个字符 é。CSV 导入、数据库迁移,以及在编码不一致的系统间复制粘贴都是常见原因。
- 会破坏已经正确的文本吗?
- 不会。只有当逆转后的字节构成有效 UTF-8 时修复才会成功,真正的乱码满足这一点而正确编码的文本不满足。因此已经正确的 'café'、'Köln'、'한국어' 或 '日本語' 会被判定为有效并原样保留 — 工具会报告无需修复。
- 为何有时会进行不止一趟?
- 若文本被两次错误解码 — 例如 UTF-8 被按 Windows-1252 读取、保存后再次按 Windows-1252 读取 — 损坏会层层叠加。工具会反复修复,直到文本不再变化或不再能逆转为有效 UTF-8,并告知用了几趟。
- 它没修好我的文本 — 为什么?
- 要么文本已经正确,要么损坏不属于常见的 UTF-8-当作-Windows-1252 这一类(例如被按 Shift_JIS 或 EUC-KR 误解码,或字节确实丢失)。本工具针对最常见的情形;若要以特定旧编码打开文件,请改用文本编码转换器。