FreeBSD UTF-8有不少方法,如果主機root不是你的,修正screen與libiconv算是比較麻煩的。以下說明的只要使用者端做略為修改環境變數即可完成。
Putty設定
在Window/Translation中的Received data….. character set選UTF-8。screen
下方的treat CJK ambiguous characters as wide要選。
編譯screen時候請WITH_CJK (mhsin’s cjkwidth)下去。這個是修正像bbs字寬會跑掉的問題。
下載18這個編碼,放到/usr/local/share/screen/utf8encodings/裡面。(ref:http://www.csie.ntu.edu.tw/~r92030/project/big5/)
.screenrc加入下面這幾行
defc1 off.cshrc,加入下面三行,其它跟LC_*或是LANG有關的通通拿掉
defencoding utf8
bind b encoding big5 utf8 #^A+b會big5轉utf-8
bind u encoding utf8 utf8 #^A+u會變成utf-8
cjkwidth on#[註1]
setenv LANG en_US.UTF-8如果要用telnet上BBS,先按^A+b後再telnet,screen會幫你Big5做轉換。
setenv LC_CTYPE en_US.UTF-8
alias telnet ‘env LANG=zh_TW.Big5 zh-telnet \!*’
convmv。檔名/目錄Big5轉UTF-8
請安裝converters/convmv,-r是遞迴,–notest下去就是直接幫你改掉了,請先測試並小心使用。
ychsiao@FreeBSD [~/tmp] [22:41/W2] convmv -f big5 -t utf-8 -r –notest *irssi
mv “CCNP/CCNP642-831�Ч�.pdf” “CCNP/CCNP642-831教材.pdf”
使用irssi的版本為0.8.12,編譯時打開WITH_PERL,會順便把recode編進去。
若加入的是UTF-8 channel(如#bsdchat),把.irssi/config裡有關big5/utf-8的設定通通拿掉。
若要加入的是Big5 channel,則需要做recode。在irssi中執行下列指令,並/save存檔。
/recode ADD #XXX Big5FTP Client部分
/recode
/set recode_transliterate ON
/set recode_fallback UTF-8
/set recode_out_default_charset UTF-8
以Filezilla2為例,在該站的進階設定將use utf8 on server if available選force即可。選Auto也是可以,不過在還沒整台機器全面轉UTF-8全還是先不要好了。
vim
set fileencodings=utf-8,big5,euc-jp,gbk,euc-kr,utf-bom,iso8859-1iconv,檔案編碼轉換
set encoding=utf-8
iconv -f big5 -t utf-8 big5.txt > utf8.txtmutt
根據rafan的utf8note,只要安裝chinese/mutt即可,因為我的平台已經是FreeBSD 6.3(Or 6-STABLE 2008?)。不過mutt讀big5信件的標題內文都有問題。
所以依rafan文件上補安裝devel/ncursesw後再重新編譯mutt後,畫面即正常。mutt設定補上:
set assumed_charset=”big5:gb2312:utf-8″致謝:我的FreeBSD UTF-8部分資訊來自#bsdchat的llwang, chinsan, mhsin, priv。
set ascii_chars=yes
set send_charset=”utf-8:big5:gb2312:us-ascii:iso-8859-1:x-unknown”
*update: 修正Big5-2003連結(thanks zmx)
註1:mhsin的說明,17:40 < @mhsin> ychsiao_utf8: 其實你啟動 screen session 那隻如果 local 是 zh_*, ja_*, kr_* 的話會自動開cjkwidth on
Reference: http://blog.ychsiao.org/2008/03/02/400
*update: convmv只能對檔案名稱做轉換。
No comments:
Post a Comment