先看目前的編碼
Notepad++ 在右下角的狀態列顯示目前用哪種編碼讀取檔案,例如 UTF-8、UTF-8-BOM 或 ANSI。在繁體中文 Windows 上,ANSI 指的就是 Big5。編碼 選單中有兩類選項,很容易搞混:
- 選單上半部的 ANSI、UTF-8、UTF-8-BOM 等:只是用另一種編碼重新讀取現有的位元組,檔案本身不變。
- 選單下半部以「轉換」開頭的選項:把文字用新的編碼重新寫入,存檔後檔案就改變了。
- 選單中的字元集子選單:可以指定 Big5、GB2312 等特定編碼來讀取檔案。
情況一:中文變成一堆怪字
檔案是 UTF-8,Notepad++ 卻用 ANSI(Big5)讀取了,你好 會變成 雿末 之類的字。在 編碼 選單中選擇 UTF-8,中文馬上就會正常顯示。這時千萬不要選「轉換為 UTF-8」:那會把亂碼當成真正的文字存下來,而且 Big5 讀不懂的位元組已經被換成 �,存檔後就救不回來了。
情況二:出現 xA4 這樣的黑塊
檔案是 Big5(ANSI),卻被當成 UTF-8 讀取,無法解讀的位元組就顯示成 xA4 這樣的黑塊。先在 編碼 選單中選擇 ANSI(或在字元集中選擇 Big5),讓中文正常顯示,再選擇轉換為 UTF-8,存檔後檔案就是 UTF-8 了。不想手動操作,也可以用 Big5 轉 UTF-8 直接轉換。
情況三:亂碼已經存進檔案裡
Notepad++ 有時會把短的 Big5 檔案誤判為西歐語系的 Windows-1252,中文就顯示成 ½Ķ¤w¸g 這類符號。如果在這個狀態下存檔,亂碼就會被寫進檔案裡,這時選單中的任何選項都不能可靠地解決,尤其是正常的行和亂碼的行混在一起時。把檔案拖到上方的框中:Mojibuster 只修復亂碼的部分,並顯示每一處變更。
亂碼
½Ķ¤w¸gÀˬd¡A¥x¥_¡B¥x¤¤¡B°ª¶¯¥þ³¡¥¿½T¡C
修復後
翻譯已經檢查,台北、台中、高雄全部正確。
新檔案一律用 UTF-8
在 Notepad++ 的偏好設定中,把新文件的預設編碼設成 UTF-8。要用 Excel 開啟的檔案,選 UTF-8-BOM 比較好,詳見 Excel 開啟 CSV 亂碼。給 Windows PowerShell 5.1 用的指令碼也需要 BOM,請見 PowerShell 中文亂碼。
常見問題
UTF-8 和 UTF-8-BOM 有什麼差別?
兩者儲存文字的方式完全相同。UTF-8-BOM 會在檔案開頭多寫 3 個看不見的位元組,Excel 和一些舊軟體靠它辨識 UTF-8。
為什麼 Notepad++ 有時會判斷錯編碼?
沒有 BOM 的檔案裡不含編碼資訊,Notepad++ 只能猜。檔案越短、中文越少,越容易猜錯。
可以一次轉換多個檔案嗎?
Notepad++ 本身只能靠巨集或外掛。在 Mojibuster 中可以把檔案一個接一個拖進來,每個只要幾秒鐘。