「亂碼」和 mojibake
亂碼在英文中稱為 mojibake,來自日文「文字化け」,意思是「文字變了樣」。1990 年代的日本同時使用 Shift_JIS、EUC-JP、ISO-2022-JP 等多種編碼,亂碼的郵件和網頁隨處可見,這個詞也因此進入了英文。在中文裡,大家習慣稱它為「亂碼」。
亂碼是怎麼產生的
電腦用位元組儲存文字,編碼規定哪些位元組代表哪個字。在 Big5 中,「你好」是四個位元組 A7 41 A6 6E。如果軟體把這些位元組當成西文編碼(Windows-1252)讀取,每個位元組都會變成一個獨立的字元,你好 就成了 §A¦n。
這一步中位元組本身並沒有遺失,只是被讀錯了。所以用正確的編碼重新讀取,就能還原原文。Mojibuster 會把亂碼還原成位元組,再以正確的編碼讀取。
亂碼
§A¦n¡A¶Ã½X¤w¸g×´_¤F ¥x¥_¥««H¸q°Ï
修復後
你好,亂碼已經修復了 台北市信義區
常見的亂碼類型
§A¦n這類夾雜符號的拉丁字母:Big5 文字在西文系統中顯示(Big5 轉 UTF-8)。- 一堆無關的漢字:UTF-8 文字被當成 Big5 讀取,常見於用 Excel 雙擊開啟 UTF-8 的 CSV 檔(Excel 開啟 CSV 亂碼)。
?或�:無法轉換的字被取代,原本的資訊已經遺失。
亂碼的常見原因
- 用 Excel 雙擊開啟沒有 BOM 的 UTF-8 CSV 檔(會以 Big5 讀取)。
- 在 Mac 或只支援 UTF-8 的軟體中開啟 Big5(ANSI)檔案。
- 網頁或郵件宣告了與實際不符的編碼(charset)。
- 已經變成亂碼的文字又被轉換了一次。
亂碼都能修復嗎?
只要位元組還在,大多數都能修復。但如果文字在儲存或傳送時已經變成 ? 或 �,原本的資訊就遺失了,無法還原。Mojibuster 會修復所有能修復的部分,並告訴你有幾處無法還原。
如何避免亂碼
- 檔案一律儲存為 UTF-8,要用 Excel 開啟的 CSV 儲存為 UTF-8(含 BOM)。
- HTML 中加上
<meta charset="utf-8">,MySQL 和 MariaDB 使用utf8mb4。 - 匯入資料時手動指定編碼,不要讓軟體自動猜測。
- 只在系統交界處轉換一次編碼。
常見問題
亂碼怎麼修復?
把亂碼貼到上方的框中,或直接拖入檔案,Mojibuster 會自動辨識並修復。大多數亂碼只是被用錯誤的編碼讀取,重新讀取即可還原原文。
檔案是損壞了還是中毒了?
都不是。亂碼只是顯示問題,不是病毒,通常資料也沒有遺失。
亂碼和 � 有什麼不同?
像 §A¦n 這樣的亂碼仍保留著原本的位元組,可以修復。� 表示軟體無法讀取某個位元組並取代了它,原本的字已經遺失。
文字會被上傳嗎?
不會。修復完全在瀏覽器中進行,文字不會被傳送或儲存。