早期我用Windows時,用光碟備份了很多中文檔名的文件。當時還沒有Unicode,所以檔名是以Big5編碼。在Linux下,如果mount CD時沒有指定原編碼系統,所有的Big5中文檔名會被視為raw ASCII,直接轉成utf-8。比方說,檔名台北.txt 就變成 ÑxÑ_.txt。
轉回來的方法:
$ echo ÑxÑ_.txt | iconv -t 437 | iconv -f big5
台北.txt 437是extended ascii。
2013/09/26更新:另可參考 http://allencch.wordpress.com/2013/04/15/extracting-files-from-zip-which-contains-non-utf8-filename-in-linux/ 提出的以下工具:
env LANG=C 7z x file.zip
convmv -f big5 -t utf8 --notest -r . # for filename which is big5 coded 以下是我最近用的情形:
env LANG=C 7z x file.zip
ls | iconv -t iso-8859-1 | iconv -f gb2312
# verify this is the right conversion sequence
# then:
convmv -f utf-8 -t iso-8859-1 --notest -r .
convmv -f gb2312 -t utf-8 --notest -r .
留言...
所有留言都必須經過人工過濾,才能顯示於網頁上,以防止垃圾訊息與詐騙!