跳至主要內容
SubtitleMatrix

字幕編碼轉換

文字樣式修正編碼與 BOM
或者貼上字幕文字

選項

改的是位元組,不是字幕內容。檔案裡的每個字元都會用你選的編碼寫出,這樣只認某一種編碼的播放器或腳本就能讀到它。UTF-8 是現代工具普遍期待的一種,也是本站其他地方統一使用的。帶 BOM 的 UTF-8 就是同樣的位元組,前面多了三個位元組的標記。UTF-16 LE 是 Windows 程式口中的 Unicode,體積大約加倍。Windows-1252 是較早的西歐編碼,每個字元一個位元組,也是要小心的一種:它容納不了中文、日文、韓文、西里爾文、希臘文或 emoji,所以每個寫不出的字元都會變成問號,並在上面的報告裡計數。檔案的其餘部分不變。

時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。

字元編碼是把文字變成位元組的規則,也是字幕檔裡唯一看不見的屬性。記事本、瀏覽器、播出伺服器與電視機都得被告知或去猜,猜得不一樣,文字就變成不屬於任何語言的符號。這一頁按你指定的編碼把檔案寫出來,讀的那一端就不必再猜。

預設是保持檔案進來時的編碼,多數時候這也是你要的:平移時間軸這類操作不該順手改寫編碼,UTF-16LE 進來的檔案出去還是 UTF-16LE。只有當面前有東西點名了編碼——交付規範、拒收檔案的軟體、顯示錯字的播放器——或當你在把來源各異的資料夾做統一時,才改這個設定。

面板上的四個選項是最常遇到的。UTF-8 是網路與多數現代工具用的,也是本站每個轉換頁預設寫出的。帶標記的 UTF-8 是同樣的位元組前面多三個,給看開頭位元組判斷編碼的 Windows 程式。UTF-16LE 是 Windows 字幕工具口中的 Unicode,每個字元兩個位元組,檔案大約變成兩倍大。Windows-1252 是較早的西歐編碼,不少歐洲播出工具仍在寫,它能裝下西歐語言的附加符號,其他裝不下。

最後那句就是一次有損,也是這一頁在寫入前先報告的原因。把日文、中文、西里爾文或希臘文字幕存成 Windows-1252,目標編碼裡沒有對應位元組的字元會寫成問號——檔案沒壞,是那些字元沒了。工作區上方的報告會數給你,計數來自編碼器寫檔時用的同一張碼表,所以讀到幾,產物裡就會有幾個問號。這個數不是 0,就換一個目標。

這一頁的上下兩欄可能看起來相同,這是預期而不是故障:編碼是位元組的屬性,欄裡裝的是字元。改變發生在檔案被寫出的那一刻,也就是你下載的時候。每一份檔案的列上會寫它被讀成哪種編碼,兩者不同時再加一個標籤寫出它將以哪種編碼寫出。檔案不上傳,工作都在瀏覽器裡完成。

範例

以 UTF-8 寫出的英文字幕檔

輸入

1
00:00:01,000 --> 00:00:02,000
The room is dark.

輸出

1
00:00:01,000 --> 00:00:02,000
The room is dark.

這是預設,也是本站其他每一頁寫出的編碼。產物等於輸入,因為檔案本來就是 UTF-8。這個例子釘住的是反面的保證:選一個編碼不會順便正常化檔案的其他部分,字幕不會因為你來過這一頁就失去換行、多出標記或改變時間碼。

同一份檔案以 UTF-16LE 寫出

輸入

1
00:00:01,000 --> 00:00:02,000
The room is dark.

輸出

1
00:00:01,000 --> 00:00:02,000
The room is dark.

Windows 字幕程式稱它為 Unicode,也是對檔案外觀影響最大的編碼:每個字元變成兩個位元組、前面放一個標記、大小約變成兩倍。這些在欄裡都看不出來,因為欄裡裝的是字元——差別要在檔案總管的大小與編輯器的編碼顯示裡看。

日文字幕以 Windows-1252 寫出

輸入

1
00:00:01,000 --> 00:00:02,000
こんにちは

輸出

1
00:00:01,000 --> 00:00:02,000
こんにちは

五個假名配一個裝不下它們的編碼,所以這次執行的有損報告會數出五個字元變成問號。兩欄仍顯示假名,因為替換發生在檔案寫出時,不是讀入時。這樣切分是刻意的:你看得到檔案寫什麼,也在報告裡看得到用這種方式寫出會放棄什麼。

常見問題

字幕檔的編碼和格式有什麼不同?

格式是檔案怎麼組織字幕編號、時間碼與文字——SRT、WebVTT、ASS 等——是你看得到的東西。編碼是那些字元怎麼變成位元組,而且是看不見的:同一份 SRT 可以存成 UTF-8、UTF-16 或 Windows-1252,在每個編輯器裡看起來都一樣。這一頁改的是後者,前者不動;轉換頁改的是前者。

目標編碼表示不了的字元會怎樣?

會被寫成問號,而頁面會在下載前告訴你有幾個。Windows-1252 涵蓋西歐字母,對日文、中文、韓文、西里爾文、希臘文或 emoji 沒有位元組,那些字元用任何形式都活不下來——沒有錯誤,也沒有能保住意思的替代。有損報告裡的數,就是產物裡會出現的問號數,由寫入器使用的同一張表算出。

為什麼轉換字幕編碼時,上下兩欄看起來一樣?

因為欄裡裝的是字元,而選擇管的是位元組。文字就是文字;每個字元佔一個、兩個還是三個位元組,是在檔案寫出、也就是下載那一刻決定的。佇列裡的列會寫每份檔案被讀成哪種編碼,將要寫出的編碼不同時再加一個標籤;你自己的編輯器也會回報存檔的編碼。

要交付的字幕檔該選哪種編碼?

除非規範另有規定,否則選 UTF-8,而規範通常真的會規定。Windows-1252 在歐洲播出的交付中很常見,只對西歐文字安全;UTF-16LE 是只做 Windows 的製作工具可能要求的。如果檔案本來就是合適的編碼,預設會保留它——在什麼都沒出錯時,這是最安全的答案。

選 UTF-16 會讓字幕檔變成兩倍大嗎?

會,差不多。每個字元存成兩個位元組,所以 20 KB 的英文字幕會變成約 40 KB,之後再做一次一般性壓縮可以消掉大部分差距。前面的標記再加兩個位元組。大小換到的是讓 UTF-16 在 Windows 上普遍的特性:每個字元寬度相同,舊軟體處理起來比較容易。

為什麼編碼清單裡沒有 UTF-16 大端?

因為沒有人主動選它,而本來就是大端的檔案照樣處理得了。以大端 UTF-16 進來的檔案,在預設設定下會以大端 UTF-16 寫回,因為你沒有點名時,這一頁做的就是保持輸入編碼。清單只放大家真的會要求的四個目標;底層寫入器涵蓋大端,是為了讓「保持原樣」永遠不會悄悄改變檔案。

相關工具