2019年8月22日 星期四

macOS 的文字 (字幕) 檔轉碼工具 HanzConvert & Convert Text Encoding to UTF8


九年前,我曾經寫過一篇文章 "SRT 字幕檔轉碼",直到今天都是本站的熱門文章 (汗),可見大家深受字幕檔亂碼之苦 (雖然這不是正版用戶會遇到的,囧)。當時我只是把我使用的例行步驟寫出來而已,並沒有想過要把這一套步驟的體驗做好,甚至自動化。這些年過去了,由於播放軟體的進步,很多軟體都能讀取不同編碼的字幕檔,故我也很少為文字編碼的問題操心。

最近由於某個原因 (請見下篇文章),我不得不將字幕檔轉換成 UTF8 編碼格式,但我的 Mac 上沒有安裝 MS Office,並意外發現 Libreoffice for Mac 這貨沒有自動偵測編碼的能力,也不會像 MS Word 給我們看預覽視窗以選擇編碼,總而言之就是沒辦法拿來轉檔,所以才找了其他軟體來 "專職" 幹這件事。

在此類工具我找到 TextBatchConvHanzConvert,由於前者的體積詭異地大 (9 MB),故推薦後者,其使用方法非常直覺:


如上圖,輸入 / 輸出檔案的文字編碼都設定好,再決定是否要繁簡轉換,就可以把轉碼好的文字檔存到指定的輸出路徑上。這個軟體非常簡單易用,不僅可以批次轉碼,自動偵測輸入檔案的文字編碼也不常出錯,但缺點就是只支援繁簡中文的部分編碼。如何轉換其他的文字編碼呢?我利用 macOS 內建的 iconv 指令寫了一個 Automator 工作流程 "Convert Text Encoding to UTF8"。


用法也很直覺,選定輸入檔案的文字編碼,此工作流程就會將該檔案轉成 UTF8 編碼,並加上 "_utf8" 的檔名後綴 (不喜歡的話可以用 Automator 的 "重新命名" 動作去修改),每個檔案都要選擇一次。"Convert Text Encoding to UTF8" 支援自定編碼 (選項 [Customize...]) [1],以及提供每個轉好的檔案的文字預覽:

選擇輸入檔案 (此例為 Men in hope.chs.srt) 的文字編碼

轉碼後的文字預覽

如果想要修改預設的編碼,輸入檔案的部分請改以下的紅框處:


encodeNames 及 encodeList 是一對一對應的,前者是選項中顯示的名字,後者是真正的編碼名 [1]。修改或新增時請注意格式,且 encodeNames 最後一行必須是 [Customize...]。

如果想修改輸出的文字編碼 (我是覺得轉成 UTF8 最安全,但不排除有人有特殊的需求) [1],請修改以下紅框處:


以上,提供給各位作個參考。



附註
1. iconv 支援的編碼可以用 iconv --list 指令查詢。

沒有留言:

張貼留言