Wednesday, November 24, 2010

How To FreeBSD UTF-8

前陣子搞過FreeBSD UTF-8的term、editor(vim)、screen與irssi。弄的時候一知半解的,所以也沒很認真的做筆記(人老了…)。最近碰到台灣唯一的irc server掛點,部分channel都移至irc.freenode.net上(喔耶,有IPv6!!),也趁機將channel從Big5轉為UTF-8。

FreeBSD UTF-8有不少方法,如果主機root不是你的,修正screen與libiconv算是比較麻煩的。以下說明的只要使用者端做略為修改環境變數即可完成。



Putty設定
在Window/Translation中的Received data….. character set選UTF-8。

下方的treat CJK ambiguous characters as wide要選。
screen

編譯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

defencoding utf8

bind b encoding big5 utf8 #^A+b會big5轉utf-8

bind u encoding utf8 utf8 #^A+u會變成utf-8

cjkwidth on#[註1]
.cshrc,加入下面三行,其它跟LC_*或是LANG有關的通通拿掉
setenv LANG en_US.UTF-8

setenv LC_CTYPE en_US.UTF-8

alias telnet ‘env LANG=zh_TW.Big5 zh-telnet \!*’
如果要用telnet上BBS,先按^A+b後再telnet,screen會幫你Big5做轉換。
convmv。檔名/目錄Big5轉UTF-8

請安裝converters/convmv,-r是遞迴,–notest下去就是直接幫你改掉了,請先測試並小心使用。
ychsiao@FreeBSD [~/tmp] [22:41/W2] convmv -f big5 -t utf-8 -r –notest *

mv “CCNP/CCNP642-831�Ч�.pdf” “CCNP/CCNP642-831教材.pdf”
irssi

使用irssi的版本為0.8.12,編譯時打開WITH_PERL,會順便把recode編進去。

若加入的是UTF-8 channel(如#bsdchat),把.irssi/config裡有關big5/utf-8的設定通通拿掉。

若要加入的是Big5 channel,則需要做recode。在irssi中執行下列指令,並/save存檔。
/recode ADD #XXX Big5

/recode

/set recode_transliterate ON

/set recode_fallback UTF-8

/set recode_out_default_charset UTF-8
FTP Client部分

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-1

set encoding=utf-8
iconv,檔案編碼轉換
iconv -f big5 -t utf-8 big5.txt > utf8.txt
mutt

根據rafanutf8note,只要安裝chinese/mutt即可,因為我的平台已經是FreeBSD 6.3(Or 6-STABLE 2008?)。不過mutt讀big5信件的標題內文都有問題。

所以依rafan文件上補安裝devel/ncursesw後再重新編譯mutt後,畫面即正常。mutt設定補上:
set assumed_charset=”big5:gb2312:utf-8″

set ascii_chars=yes

set send_charset=”utf-8:big5:gb2312:us-ascii:iso-8859-1:x-unknown”
致謝:我的FreeBSD UTF-8部分資訊來自#bsdchatllwang, chinsan, mhsin, priv


*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: