Friday, September 23, 2011

Freebsd UTF-8 環境

 
 

Sent to you by Danny via Google Reader:

 
 

via Hsian Studio by Clockwork Box on 4/18/09

目前的unix like系統像是freebsd ubuntu ...都走上utf8的編碼,因為在utf8編碼上可以支援更多的語系,但是要怎麼將整個使用環境改成utf8編碼可以透過以下的方式。

1、設定登入語系
可以用locale -a |grep zh來查,我用的是zh_TW.UTF-8
vim ~/.login_conf
加入
me:\
:lang=zh_TW.UTF-8:


設好之後重新登入,使用locale來看應該就是zh_TW.UTF-8了

2、設定vim編輯器
vim ~/.vimrc
加入
"file encoding
set fileencodings=utf-8,big5
set fileencoding=utf-8


fileencodings是說vim透過順序解碼,如果成功就使用
fileencoding是說vim建立文件的時候使用utf8編碼

3、設定irssi聊天工具
vim ~/.irssi/config
修改settings部份
settings = {
core = {
recode_fallback = "UTF-8"; #本端使用utf8
recode_out_default_charset = "UTF-8"; #輸出使用utf8
recode_transliterate = "yes";
real_name = "xxxxx";
user_name = "xxxxx";
nick = "xxxxxx";
};
"fe-common/core" = { term_charset = "UTF-8"; }; #用utf8字元集
"fe-text" = { actlist_sort = "refnum"; };
};


4、設定screen工具
在編譯screen的時候請加入cjk的支援,如果沒有加入的話先去重編一次。screen很聰明會自動看你設定的LC_ALL為什麼編碼來開啟編碼方式,所以其實不用太需要去設定,但是會出現一種問題,就是你make config的時候銀目會花掉,這是因為cjk的關系也就是寬字元顯示的關系,所以我會在screen裡面先關掉cjk,因為預設為utf8時它就會自動啟動。
vim ~/.screenrc
加入
cjkwidth off


當有需要顯示像是日文或是韓文時,請手動開啟cjk,請用ctrl+a, :cjkwidth on來開啟
※請注意開啟cjk的時候不論你用的是putty還是pietty全都要和screen一致才行

5、設定pietty或putty
選項 > 字元編碼 > Unicode UTF-8
選項 > 亞洲語系修正 > 取消 亞洲寬字元 (這個就是cjk了)
※所以如果在screen裡面有開cjkwidth on的話,記得這裡就要勾選亞洲寬字元,但是平常如果沒有在看bbs沒有一堆外星文字的話,是不用特別去開cjk的。
※請配合screen所設定的cjk要一致。

6、WinScp檔案傳輸
可以透過設定winscp自動幫忙轉換windows和freebsd兩邊的編碼

開啟login時,選Environment裡面有Server environment的第二個下拉選項
UTF-8 encoding for filenames: 選ON,之後記得存檔

※這裡提醒一下,winscp只有管理檔名的轉換問題,內容編碼為何,它是不理的,所以如果你用vim寫的話,那裡面的編碼已經是utf8了,所以下載回來,需要使用支援utf8編碼的軟體來開,否則會是乩碼。


關於編碼的觀念
==============================================================
對於不論是big5或是utf-8都好,它都是一種編碼的方式,其實要看每個程式是否有支援編碼的部份,像檔名的話,就是由putty或是pietty來顯示編碼,而如果是文件內的資料的話,用vim來開那就是由vim來決定編碼的方式,所以要設定utf8的話,並不是只要設定一個部份而己,其實每個程式都要設定,像是screen和putty就有很大的關係,必須要相互配合。

編碼是編碼,顯示是顯示,今天使用了utf-8編碼,代表你打的每個字都是由utf-8當成內碼來表示,而我們看到的中文字顯示的出來,表示這個軟體它支援轉換utf-8這種編碼的方式,一次只能選擇一種編碼方式,所以不可能檔案裡面又是用big5編碼或是又用utf-8編碼。

不過現在越來越多opensource的軟體越來越強了,只要設定了LC_ALL的部份,它就會自動偵測且自動切換編碼了,是真的非常的方便。

 
 

Things you can do from here:

 
 

No comments: