以前貪圖方便,就用「虛擬機」中的 Windows 來解壓縮,並利用「共享資料夾」複製回 Linux 中使用。只為了這點小事就開啟 Windows「虛擬機」,覺得有些小題大作。就想在 Linux 中直接解決這個問題。找了一些資料,整理出相關資訊如下:
安裝 convmv 內碼轉換套件
Linux 裏有個套件 convmv,是專用設計來轉換 不同的內碼,先安裝它[root@Celeron-D ~]# dnf install convmv安裝後,所有的使用者都可以用它。
壓縮檔之解壓縮
接著,在解壓縮時加上〝LANG=C〞這個環境變數,[SiB@Celeron-D Temp]$ LANG=C unzip 中文檔名.zip註:將壓縮檔複製到新目錄再解壓縮,待會操作轉換檔名內碼時,才不會影響其它檔案。
上例的〝LANG=C〞是『暫時』將語言環境設為「英文內碼」,也就是『en-US』。這時列出來的檔名仍是『亂碼』,不過該「內碼」的二進位是正確的(註:這很重要,可確保等一下轉換「內碼」時,不會出錯)。如果習慣使用其它『解壓縮』程式,就將〝unzip〞換成其它程式名稱。
轉換檔名之「內碼」
這時就可以用 convmv 來轉換「內碼」,指令如下[SiB@Celeron-D Temp]$ convmv -f big5 -t utf8 -r --notest *上例中的各項參數請參考下表說明,其中的『big5』及『utf8』是「內碼」的名稱,需要時可以換成別的「內碼」,而『 * 』是指定所有檔名。
幾個 convmv 的常用參數列表說明如下:
參 數 | 作 用 說 明 |
---|---|
-f 來源編碼 | 將目前「內碼」強制視為『來源編碼』所指定之「內碼」系統。 |
-t 目的編碼 | 將目前「內碼」轉換為『目的編碼』所指定之「內碼」系統。 |
-r | 同時處理『目前工作目錄』及以下各『子目錄』中之檔名。 |
--list | 列出目前 convmv 所有可處理之「內碼」系統。 |
--notest | 實際執行『內碼轉換』。未加此參數時,convmv 預設只顯示轉換後的檔名,讓使用者確認所下命令是否正確。 |
已測試版本:
- Fedora: 25
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)