顯示具有 中文 標籤的文章。 顯示所有文章
顯示具有 中文 標籤的文章。 顯示所有文章

2011年3月15日 星期二

解決 tree 指令無法顯示中文問題

預設安裝的 tree 套件無法正確顯示中文,如:
 ~/tmp$ tree
.
`-- \346\211\213\345\206\212
    `-- shell \346\267\261\345\272\246\346\225\231\345\255\270.pdf

1 directory, 1 file
需要手動更改:
  1. 至 http://mama.indstate.edu/users/ice/tree/下載最新版本,以 1.5.3 為例
  2. $ wget http://mama.indstate.edu/users/ice/tree/src/tree-1.5.3.tgz
  3. 解開並重新編譯、安裝
  4. $ tar xzf tree-1.5.3.tgz; cd tree-1.5.3/ ; make ; sudo make install
確認蓋掉 /usr/bin/tree
Done.

再試一次
~/tmp$ tree
.
`-- 手冊
    `-- shell 深度教學.pdf

1 directory, 1 file
中文目錄與檔名都可正確顯示

常見繁簡文互換或中文編碼問題

編碼轉換(不轉換繁、簡文)
  • 改變將路徑下的目錄與檔案名稱的編碼方式
*  需安裝 convmv
* 先測試看看:從 big5 編碼轉成 utf8
convmv -f big5 -t utf8 -r --nosmart folder_name
* 強制轉換
convmv -f big5 -t utf8 -r --nosmart --notest folder_name

繁、簡體轉換
  • 轉換檔案內容:利用 iconv 進行繁、簡互轉
* 先考慮簡單的情況:
將 gb2312 編碼的簡體轉為 big5 編碼的繁體
iconv sc-gb2312.txt -f gb2312 -t big5 -o output.txt
若需要再把編碼轉為 utf8 則再換一次
iconv sc-gb2312.txt -f gb2312 -t big5 | iconv -f big5 -t utf8   -o output.txt
big5 繁體中文要轉成 utf8 編碼的繁體中文
cat tc-big5.txt | iconv -f big5 -t utf8 > output.txt
但比較麻煩的不知道編碼的格式為何。如此,可以用 autob5, autogb (需要安裝 zh-autoconvert ) 來協助,需要再轉換 utf8 編碼再 pipe 給 iconv 做,如下:
cat sc-unknow.txt | autob5 | iconv -f big5 -t utf8 >  output.txt
批次轉換
for i in `ls *.chs.srt`; do cat $i | autob5 | iconv -f big5 -t utf8 >  $i.cht-srt ; done

反之亦然,如:
cat tc-big5.txt | autogb | iconv -f gbk -t utf8 > output.txt

* 複雜的情況:
文件內容為 utf8 編碼之簡體,要轉換成 utf8 繁體,則需要中介編碼,如下
cat sc-utf8.txt | iconv -f utf8 -t gb2312  | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8 output.txt

下面則是轉換都是 utf8 的方式繁、簡檔名
  • utf8簡體檔名轉成utf8繁體檔名
* 需安裝 zh-autoconvert
* 先轉換目錄名稱
find . -type d -print0 | while read -d $'\0' file  ;  do  mv "$file" "$(echo $file | autob5 --input utf8 | iconv -f big5 -t utf8)" ; done
* 再轉換檔案名稱
find . -print0 | while read -d $'\0' file ; do  mv "$file" "$(echo $file | autob5 --input utf8 | iconv -f big5 -t utf8)" ; done
PS:以上用法可避免檔案或目錄名稱中有空白

Ceasar's Photo

www.flickr.com