TXT 小說打開是亂碼,怎麼修
方框、問號、怪字,多半不是檔案壞了。
TXT 亂碼幾乎都是編碼判斷錯誤,不是檔案損毀。純文字檔裡只有位元組,沒有任何欄位記載「我是用哪種編碼存的」,所以軟體只能猜。猜錯了,同一串位元組就會被解讀成完全不同的字。解法有兩個方向:換一個會自動辨識編碼的閱讀器,或在電腦上把檔案另存成 UTF-8。檔案本身通常完好無損。
為什麼會亂碼
中文有好幾套編碼並存。簡體中文圈主要用 GB18030(以及它的前身 GBK),繁體中文圈的舊檔常見 Big5,這幾年新的檔案多半是 UTF-8。三套系統對同一個位元組的解釋各不相同。
問題在於 .txt 這種格式不帶任何標記。你把一個 GBK 的檔案交給一個預設用 UTF-8 讀的軟體,它會照 UTF-8 的規則去拆位元組,拆出來當然不是原本的字。畫面上就變成一整片方框、問號,或是一堆看得懂筆畫卻連不成句子的怪字。
所以「亂碼」這個詞其實有點誤導。位元組沒有亂,是讀的人用錯了尺。
從症狀反推是哪一種
| 你看到的畫面 | 通常代表 | 怎麼處理 |
|---|---|---|
| 整篇都是「�」或空心方框 | 編碼完全猜錯。最常見的是 GBK 或 Big5 的檔案被當成 UTF-8 讀。 | 用能指定編碼的軟體,依序試 GB18030、Big5、UTF-8。 |
| 是中文字,但完全讀不通 | 兩套中文編碼互相誤讀。例如 UTF-8 的檔案被當成 Big5 或 GBK 解。 | 同上。這種情況檔案內容其實完整,換對編碼就全部還原。 |
| 大部分正常,偶爾夾雜怪字 | 檔案本身混了不同來源的片段,或含有原編碼表裡沒有的罕用字。 | 轉存成 UTF-8 後多半會改善,剩下的零星字只能手動改。 |
| 開頭前幾個字元怪怪的 | 檔案帶 BOM(位元組順序記號),而讀取端沒有處理它。 | 用支援 BOM 的軟體開啟,或另存新檔時選「UTF-8(無 BOM)」。 |
| 每個字中間都夾一個空格或方框 | 檔案是 UTF-16,被當成單位元組編碼讀。 | 指定 UTF-16 開啟,再另存成 UTF-8。 |
解法一:用會自動辨識編碼的閱讀器(最省事)
如果你要處理的是一整批小說,一個一個轉檔並不實際。比較合理的做法是讓閱讀器自己判斷。
看冊在匯入的當下就會分析檔案的位元組分布,判斷它是 GB18030、Big5、UTF-8 還是 UTF-16,然後用對應的編碼讀進來。開發期間拿 125 個真實書檔跑過完整匯入管線,125 個全數通過,沒有一本判定為亂碼;另外用 1,278 本公開電子書跑同一條管線,1,277 本通過。萬一還是遇到判斷錯誤的檔案,打開那本書 →「⋯」→「這本書出問題?」→「文字編碼」可以手動指定重讀,不用退回電腦處理。
順帶一提,簡體檔案讀進來之後還有第二關:字形是簡體的。看冊會接著做簡轉繁,並把中國用語換成台灣說法,這兩項是免費功能且預設開啟。細節在這一頁。
iOS 17.0 以上,iPhone 與 iPad 皆支援。免費下載。
解法二:在電腦上另存成 UTF-8
檔案不多,或你想一勞永逸把整批檔案統一成 UTF-8,可以在電腦上處理。
Windows(記事本)
- 用記事本開啟 TXT。如果內容已經正常顯示,直接跳到第 3 步。
- 顯示不正常的話,改用「檔案 → 開啟」,在對話框下方的編碼欄位換一個再開一次。⚠️ 記事本的選單裡沒有 GB18030,而台灣版 Windows 的「ANSI」等於 Big5——所以簡體 GBK 檔用記事本多半救不回來,直接跳到下面的 VS Code 那段。
- 內容正常之後選「檔案 → 另存新檔」,把編碼改成 UTF-8,存成新檔。
macOS(文字編輯)
- 先到「文字編輯 → 設定 → 開啟與儲存」,把「開啟檔案」的純文字編碼改成「中文(GB 18030)」或你要試的編碼。
- 開啟檔案確認內容正常。
- 把儲存編碼設為「Unicode(UTF-8)」,另存新檔。
VS Code(一次處理很多檔比較順手)
- 開啟檔案,點右下角狀態列的編碼名稱。
- 選「Reopen with Encoding」,挑 Chinese Simplified (GB18030) 或 Traditional Chinese (Big5),直到內容正常。
- 再點一次編碼欄位,選「Save with Encoding」,存成 UTF-8。
解法三:檢查是不是根本不是純文字檔
有些檔案副檔名寫著 .txt,內容其實是 HTML、EPUB 甚至 PDF。這種情況畫面上會出現大量角括號標籤或看起來像程式碼的片段,跟編碼無關。
看冊可以直接讀 EPUB、HTML、RTF、Markdown,遇到這種檔案改用對應格式匯入就好。受 DRM 保護的購買書籍無法開啟,那不是亂碼,是加密。
解法四:轉繁體之後才變怪的,那是另一個問題
如果檔案本來讀得好好的,是「轉成繁體」之後才出現錯字,那不是編碼問題,是簡繁轉換的問題。
簡體一個字常常對應到繁體好幾個字。「头发」的「发」該轉成「髮」,「发财」的「发」該轉成「發」,逐字硬換就會出現「頭發」這種錯字。要靠詞彙層級的對照表才轉得對。看冊用的是 OpenCC 的台灣字形對照表(s2tw),這一關會處理掉。
常見問題
亂碼會不會代表檔案已經壞了?
通常不會。真的損毀的檔案多半是開不起來、或大小明顯不對。能整齊地顯示出一堆方框與問號,反而說明位元組還在,只是解讀方式錯了。
我可以怎麼知道檔案原本是什麼編碼?
沒有百分之百的方法,只能推測。純文字檔不記錄自己的編碼,所有軟體都是靠位元組分布去猜。實務上照這個順序試最快:GB18030、UTF-8、Big5、UTF-16。
用線上轉檔網站安全嗎?
要看你介意什麼。轉檔網站需要你把檔案上傳到別人的伺服器。如果是自己收藏的小說,用本機軟體處理比較單純。看冊的判斷全部在裝置上進行,檔案不會離開你的手機。
整批檔案都要轉,有沒有比較快的方法?
直接用會自動辨識編碼的閱讀器最省事,不用轉檔。若堅持要統一成 UTF-8,可以把資料夾丟給有批次轉碼功能的工具處理,不過對多數讀者來說沒有必要。
看冊判斷錯了怎麼辦?
打開那本書 →「⋯」→「這本書出問題?」→「文字編碼」手動指定,會用新編碼重新讀取。若某個檔案怎麼試都不對,歡迎寄給 [email protected],這類案例對改進判斷邏輯很有幫助。