為什麼字幕會變成亂碼
SRT 和 ASS 檔案裡沒有寫明自己用的是哪種編碼,播放器只能用猜的。字幕網站和雲端硬碟裡的繁體字幕,尤其是幾年前的舊字幕,很多是用 Big5 儲存的;而智慧電視、Plex、Jellyfin、Kodi 大多預設用 UTF-8 讀取,中文就變成 � 或方塊。反過來,UTF-8 字幕被當成 Big5 讀取時,會出現 雿末 這類怪字,中間還夾著 �。
亂碼
1 00:00:01,000 --> 00:00:03,500 §Ṳ́µ±ß¥h¬Ý¹q¼v§a¡C 2 00:00:04,000 --> 00:00:06,000 ¦n°Ú¡A´XÂI¦bªù¤f¨£¡H
修復後
1 00:00:01,000 --> 00:00:03,500 我們今晚去看電影吧。 2 00:00:04,000 --> 00:00:06,000 好啊,幾點在門口見?
常見的亂碼樣子
�或空白方塊:Big5 字幕被當成 UTF-8 讀取。檔案裡的位元組其實都還在,用原始檔案就能完整恢復。雿末夾雜�:UTF-8 字幕被當成 Big5 讀取。被換成�的部分如果又被存檔,就救不回來了。¤¤¤å¦r¹õ:Big5 字幕在國外的播放器或西文系統中顯示。這類舊檔案的轉換請見 Big5 轉 UTF-8。笢恅趼躉這種看似中文卻讀不通的字:簡體 GBK 字幕被當成 Big5 讀取,下面另外說明。
修復步驟
- 把
.srt或.vtt字幕檔拖到上面的框中。 - Mojibuster 會自動辨識 Big5、Big5-HKSCS、GBK 和 UTF-8,並修復亂碼。用哪種編碼讀取,會顯示在結果區。
- 按 下載,取得 UTF-8 格式的字幕,取代影片旁邊的舊檔案。檔名要和影片相同,播放器才會自動載入。
時間軸、序號、換行和斜體等格式標籤都不會被更動,只有亂碼的文字會被修復。
ASS、SSA 字幕怎麼辦
雙語字幕和特效字幕常用 .ass 或 .ssa 格式。檔案選擇框目前不直接接受這兩種副檔名,但它們和 SRT 一樣是純文字:把檔名改成 .txt,修復後下載,再把副檔名改回 .ass 就可以了。樣式裡的字型名稱(例如 微軟正黑體)如果也亂了,會一起被修復。
如果編輯器裡顯示的是 �,請用改副檔名的方法處理原始檔案,不要複製貼上:� 裡已經沒有原本的位元組了。
簡體和繁體字幕互相亂碼
從中國網站下載的字幕多半是 GBK 編碼。繁體中文 Windows 和不少播放器會用 Big5 讀取它,於是 中文字幕 變成 笢恅趼躉 這種每個字都認得、整句卻讀不通的亂碼。反過來,Big5 字幕在簡體系統上會變成夾雜日文假名的 いゅ辊。
這類檔案請直接拖入原始檔案:Mojibuster 會比較 Big5、GBK 等讀法,選出最合理的一種;如果選錯了,可以按結果區提示中的 以 … 讀取 換一種編碼。注意:Mojibuster 只修復編碼,不做簡繁轉換,GBK 字幕修復後仍然是簡體字。
各播放器的提示
- VLC:在 工具 → 偏好設定 → 字幕 / OSD 中可以設定預設編碼。但只能設一種,Big5 和 UTF-8 字幕混在一起時,總有一部分會亂碼。
- PotPlayer:通常能自動辨識編碼,辨識錯誤時可以在字幕設定裡手動指定字元集。
- Kodi:設定中可以為字幕指定字元集,同樣只能選一種。
- Plex、Jellyfin、Emby 和智慧電視:基本上都用 UTF-8 讀取,外掛字幕請一律存成 UTF-8(不含 BOM)。
- WebVTT(
.vtt)依規範必須是 UTF-8。
以後怎麼避免
- 下載字幕後先統一轉成 UTF-8,再放進媒體庫。
- 用 Aegisub 等工具編輯字幕時,存成 UTF-8。
- 在 Notepad++ 中可以查看並轉換單一檔案的編碼。
- 不要把顯示成亂碼的字幕直接另存新檔:亂碼一旦存檔,被換成
?或�的字就遺失了(請見 亂碼是什麼?)。
常見問題
字幕裡的 � 能修復嗎?
要看 � 出現在哪裡。如果是播放器把原始字幕顯示成 �,檔案本身沒有壞,把原始檔案拖進來就能恢復。如果 � 已經被存進檔案,原本的文字就遺失了,只能重新下載字幕。
修復後時間軸會變嗎?
不會。只改亂碼的文字,時間軸、序號和換行(包括 Windows 的 CRLF)都維持不變。
電視播放外掛字幕出現亂碼怎麼辦?
大多數智慧電視和電視盒只認 UTF-8。用 Mojibuster 把字幕轉成 UTF-8,和影片放在同一個資料夾並使用相同檔名,再重新播放,例如從隨身碟播放時。
能把字幕轉回 Big5 嗎?
目前只能存成 UTF-8。現在幾乎所有播放器都支援 UTF-8,一般不需要 Big5。
字幕檔會被上傳嗎?
不會。處理完全在瀏覽器中進行,檔案不會離開你的裝置。