Linux上的p7zip,可以容易處理zip、7z、rar等解壓檔。但問題是,如果直接使用7z來解壓來自習慣完全純母語地區,如大陸/簡體、台灣/繁體,或者日本/日文等地的壓縮檔,解壓後的檔案往往出現亂碼(或者火星文?水星文?)。
筆者個人發現,用SSH還好,如果是在半自動化操作時用cornjob跑shell script的話,爆出來的檔名不是火星文就是問號…
有流傳的解決方法是解壓的同時用convmv或者iconv之類的程式program?腳本script?去為解壓的檔案名轉碼。
可惜有時系統有很多限制,如Synology上的shell便沒有簡單的convmv或者iconv可用。
有興趣從原始代碼開始自己編譯的朋友例外。
而為解決問題而來的,下面就有答案──
LANG=zh_CN.UTF-8 7z x -sccUTF-8 "/var/download/内含简体文档.zip" -o/var/download/output
以筆者理解,就是在Linux上執行7z x
解壓前,先把這次操作的「所用語言」設為「漢語_中國大陸·萬國碼」(zh_CN.UTF-8
)來讀出簡體中文字,然後轉出的文字也用UTF-8作檔名,輸出到「/var/download/output」中。
注意輸出的〔-o
〕後面是沒有空格的!
如果爆開(解壓)的對象內含的是繁體、日文或韓文,也可以如此泡製。在ORACLE網站找到這個locale列表,或者在*nix機上的/usr/share/i18n/SUPPORTED
找,祝君好運。
“How to expand ZIP file with zh_CN characters filename inside with 7z on Linux and avoid seeing Martian”