Re: screen with utf8.

看板FreeBSD作者時間22年前 (2002/05/24 18:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
> 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.
文章代碼(AID): #yxXch00 (FreeBSD)
文章代碼(AID): #yxXch00 (FreeBSD)