Re: screen with utf8.
> On Tue, 7 May 2002 14:48:33 +0000 (UTC), yjchou@cis.nctu.edu.tw wrote:
screen 自 3.9.11 起,提供了一項 encoding transaltion 的新功能。
簡單的說,就是讓使用者可以在 screen 裡,顯示不同的內碼。
舉個例子,我們可以在 window 1 連上繁體中文 BBS, window 2 以
w3m/lynx 觀看簡體中文網站,並在 window 3 中閱讀日文文件等等。
不過,在使用這項功能前,建議先抓下面這個檔:
http://linux.nctu.edu.tw/~yjchou/work/screen/18
備份 {/usr,/usr/local}/share/screen/utf8encoding/18 以後覆蓋過去。
這樣,日文假名才能正確轉譯。
接著,找一個支援 utf8 的 terminal emulator。如 utf8 xterm。
MS Window 上則可使用 PuTTY。將字型與字集調整好就完成準備工作。
在 screen 中,有兩種 encoding type。一種是 display encoding;
也就是輸出到螢幕上的編碼方式,同時也是使用者由 terminal 輸入
的編碼方式。另一種是 internal encoding。使用 encoding transaltion
時,必須將 display encoding 設為 utf8,而 internal encoding 則
可以視當時的需要動態的改變。
所以,在初始化 screen 時,請先在 ${HOME}/.screenrc 內加上
defencoding big5
表示預設的 internal encoding 為 big5;並在啟動時加上 -U 的參數,
代表 utf8 display encoding。 (e.g % screen -DRU )
這樣子,啟動後應該能夠正常的顯示(繁體)中文。就如同一般使用的情況。
而當有需要觀看、瀏覽 gb2312、euc-jp/jis、utf8 編碼的內容時,可以
用 <CMD> :encoding (ENCODING_NAME) 來動態更改目前所在 window 的
internal encoding。目前可用的編碼有 big5, utf8, eucJP, eucCN,
eucKR 等等。
除了 internal/display encoding 設為 big5/utf8 的方式之外,這個
功能還有另外一種用法;即利用 <CMD> :encoding utf8 big5
將 internal/display encoding 設為 utf8/big5 (也就是反過來用)
這可以讓一般以 big5 字集/編碼為主的 terminal client 使用,透過
這個功能,讓 screen 將 utf8 的內容轉為 big5 的編碼,使 client
可以看到正確的字。(不過,只限於 big5 吃的下的轉換。jp/cn/kr的
法亦同)
那除了 big5 <-> utf8, eucCN <-> utf8, eucJP <-> utf8 以外,能夠
做 big5 <-> eucCN, 甚至 big5 <-> eucJP 嗎? 很抱歉,目前只能做至
一種 encoding 與 utf8 的轉換。
最後,解釋一下 screen 的 encoding translating table 機制。
當使用/切換新的 encoding 時, screen 會到
${prefix}/share/screen/utf8encoding/
下找尋對應的 table (01 for gb2312, 02 for jis-x-0208, 03 for kr,
04 for jis-x-0212, 18 for big5)
以 big5 table 來說,table 內基本上是多組 (big5, utf8) 的 pair.
轉碼時會搜尋 table 來做 big5 <-> utf8 互相轉換的工作。理論上,
應該可以做到 big5 <-> eucJP 時,利用 utf8 作為中間產物來達成,
不過目前 screen 沒有做,有需要的人可以自己改,或是等下個版本,
看看有沒有支援:
在修改 big5 table 時,寫了一支小程式幫忙。在
http://linux.nctu.edu.tw/~yjchou/work/screen/
下可以找到。
用法:
% perl conv.pl < table.big5 > ${prefix}/share/screen/utf8encoding/18
同目錄下我放了另一個合併了 big5.eten 與 big5e 的 table, table.big5e .
不過遺撼的是,screen 似乎將 0x80 - 0x9f 當作 seqeuence char , 所以
big5e 新增的 0x8040 - 0xa0fe 中,只有 0xa040 - 0xa0fe 可以正常轉譯。
因此,我作的 big5 table (18) 就沒有放 big5e 進去。
--
周 業 及 (Chou Yeh-Jyi)
======================= Don't feel as if you're Bible salesmen.
yjchou@cis.nctu.edu.tw The world has too many of those already.
FreeBSD 近期熱門文章
PTT數位生活區 即時熱門文章