檔案冇問題——係解讀錯咗
字幕檔入面儲存嘅係位元組。將位元組變成字元需要知道佢係用咩編碼寫成嘅——搞錯咗就會變成亂碼。檔案入面連一個位元組都冇少;用啱嘅編碼重新讀取一次,字元就會返晒嚟。
咁樣就將工作分咗做兩部分:搵出佢原本係咩編碼,同埋 將佢儲存成你個播放器偵測到嘅編碼。前者靠試探式解碼同評分,後者靠儲存副本。佢哋解決嘅係唔同嘅問題。
五種外觀,五種原因
亂碼並唔係隨機嘅——佢嘅外觀透露咗造成問題嘅原因:

點解取代字元救唔返
取代字元就係分界線。`` 代表啲位元組喺 更早嘅步驟 (通常係某個程式讀取檔案再儲存過)已經被丟棄咗,而且冇記錄低有咩被掉咗。到咗呢個階段,已經冇任何嘢可以反推——冇人救得返。
所以修復頁面會用唔同方式處理兩種情況。上載檔案如果原始位元組完好無缺,就可以嘗試各種編碼;如果貼上嚟嘅文字已經包含取代字元,就會直接清楚咁話畀你聽:「無法修復,請上載原始檔案」。
仲有一種相反嘅情況:內容睇落完全正常,但你個播放器依然顯示亂碼。檔案本身冇問題——係播放器揀錯咗編碼。編輯文字係冇幫助嘅;儲存一個帶有 BOM 嘅 UTF-8 或 GBK 副本交畀佢就得。

修復時喺度對比緊乜嘢
呢個工具會嘗試所有合理嘅編碼,然後為每個結果評分:有幾多係由常用字組成、有冇一串串嘅重音符號、一串串嘅符號,或者 CJK 文字係咪滿佈生僻字。得分最高嘅結果會排喺列表最頂。
如果冇邊個分數特別標青,就會咩都唔推薦 —— 好過同你講「呢個咁樣睇落去都ok嘅」然後塞個同語言得個似字嘅嘢畀你。被搞亂兩次嘅文字(錯手儲存一次,然後錯手修復一次)會喺最高候選入面多做一輪反推。

儲存啱嘅編碼先至算大功告成
修復好嘅文字依然需要儲存成你個播放器認得嘅編碼。Windows 嘅播放器通常靠 BOM 黎偵測編碼,所以 帶 BOM 嘅 UTF-8 最少麻煩;舊硬件同埋一啲地區性嘅播放器就想要 GBK。你可以揀 UTF-8、UTF-8(帶 BOM)、GBK、Big5、Shift_JIS 或 EUC-KR,如果有唔夾嘅話(例如 GBK 裝唔落韓文)系統會叫你揀第二個。

相關工具同指南
完整操作指南 —— 如何修復亂碼字幕;SRT 檔案實際儲存緊咩 —— SRT 檔案入面有咩;編碼冇問題但係內容好雜亂(浮水印、廣告、聽障標籤) —— 字幕清理。