“乱码”和 mojibake
乱码在英文中叫 mojibake,来自日语“文字化け”,意思是“文字变了样”。上世纪 90 年代,日本同时使用 Shift_JIS、EUC-JP、ISO-2022-JP 等多种编码,乱码的邮件和网页随处可见,这个词也因此进入了英语。在中文里,人们习惯叫它“乱码”。
乱码是怎么产生的
计算机用字节保存文字,编码规定哪些字节代表哪个字。在 UTF-8 中,“你”保存为三个字节 E4 BD A0;而 GBK 每两个字节读成一个字,于是同样的字节就变成了完全不同的汉字,你好 成了 浣犲ソ。
这一步中字节本身并没有丢失,只是被读错了。所以用正确的编码重新读取,就能恢复原文。Mojibuster 会把乱码还原成字节,再按正确的编码读取。
乱码
浣犲ソ锛屼贡鐮佸凡缁忎慨澶嶄簡 鍖椾含甯傛湞闃冲尯
修复后
你好,乱码已经修复了 北京市朝阳区
常见的乱码类型
浣犲ソ:UTF-8 文本被当成 GBK 读取,常见于用 Excel 双击打开 UTF-8 的 CSV 文件(Excel 打开 CSV 乱码)。ÄãºÃ这类带重音的拉丁字母:GBK 文本在西文系统中显示(GBK 转 UTF-8)。锟斤拷:UTF-8 里的替换字符�又被当成 GBK 读取后的样子,原来的文字已经丢失。?或�:无法转换的字符被替换,原文信息已经丢失。
乱码的常见原因
- 用 Excel 双击打开没有 BOM 的 UTF-8 CSV 文件(会按 GBK 读取)。
- 在 Mac 或只支持 UTF-8 的程序中打开 GBK(ANSI)文件。
- 网页或邮件声明了与实际不符的编码(charset)。
- 已经乱码的文字又被转换了一次。
乱码都能修复吗?
只要字节还在,大多数都能修复。但如果文字在保存或传输时已经变成 ?、� 或 锟斤拷,原来的信息就丢失了,无法恢复。Mojibuster 会修复所有能修复的部分,并告诉你有几处无法恢复。
如何避免乱码
- 文件统一保存为 UTF-8,要用 Excel 打开的 CSV 保存为 UTF-8(带 BOM)。
- HTML 中写
<meta charset="utf-8">,MySQL 和 MariaDB 使用utf8mb4。 - 导入数据时手动指定编码,不要让程序自动猜测。
- 只在系统边界处转换一次编码。
常见问题
乱码怎么解决?
把乱码粘贴到上面的框中,或直接拖入文件,Mojibuster 会自动识别并修复。大多数乱码只是被用错误的编码读取,重新读取即可恢复原文。
文件是损坏了还是中毒了?
都不是。乱码只是显示问题,不是病毒,通常数据也没有丢失。
乱码和 � 有什么区别?
像 浣犲ソ 这样的乱码仍保留着原来的字节,可以修复。� 表示程序无法读取某个字节并替换了它,原来的字已经丢失。
文字会被上传吗?
不会。修复完全在浏览器中进行,文字不会被传输或保存。