screen with utf8

轉載自 screen with utf8
putty + screen, use utf-8 編碼
.screenrc 只留 defencoding big5
然後啟動screen 時用 screen -U (-U 使用 UTF-8)
putty 裡要設成 utf8 即可.
(Window -> Translation -> alt+r 會到 Use font encoding
就把 Use font encoding 改成 UTF-8 就可以了)


轉載自 screen with utf8
發信人: Chou Yeh-Jyi , 看板: Linux
標 題: screen with utf8.
發信站: Dept. of Computer & Information Science, NC (Tue May 7 22:48:33 2002)
轉信站: Cynix!ctu-reader!ctu-peer!news.nctu!news.cis.nctu!not-for-mail
Origin: linux2.nctu.edu.tw
嗯,剛看有人問 putty & screen & utf8 的相關問題,
想起前一陣子看到 screen ChangeLog 猛然出現 utf8
時,特別翻 manual/code 的記憶。回頭再把 code 翻出
來看才發現之前想錯了,以為 screen 只有做 charset
filter 而已,其實 screen 也有作轉碼的動作(只是看
起來錯誤百出,所以當時才會誤會。因為我特別挑 big5
日文假名來測試... 我真是笨蛋,明明知道有問題的。)
Anyway, 有在 win32 下使用 putty , 連到 un*x 下跑 screen
的網友可以試著照下列的步驟走一次,就知道我要表達什麼了。
(作完每個動作,如果顯示不正常的話,請用 Ctrl-L 來 refresh)
1. 將 putty 的 translation 設為 UTF-8
2. 在 screen 裡下
:utf8 on
:encoding big5 utf8
screen 會自動轉碼 (但是日文假名好像(全部?)對應錯了)
P.S. screen-3.09.11 以上才有支援 :encoding 的樣子。
3. 試試看連 (big5)bbs , 應該可以看到正確的中文。
不過有趣的是,一些符號、圖案(如星形、圓圈等)會轉成 unicode
對應圖案的樣子(不過只佔 1 byte 顯示? 我上 bahamut 看到的現象)
框線換成 unicode 的無接縫(?)框線。有些(蠻多)字也沒有正確轉過去
不過因為圖案、符號佔得大小有變,所以 ASCII ART 可能慘不忍睹.. :p
4. 弄個 jp code 的東西。用
:encoding eucjp utf8
應該可以看到正確的日文。
5. 弄個 gb code 的東西。用
:encoding euccn utf8
應該可以看到正確的簡體字。
6. 要變回原來的樣子。
:utf8 off
:encoding big5 big5
putty 的 translation 改回 [Use Font Encoding]
討論:
:utf8 on 改變 window 為 utf8 encoding
:encoding big5 utf8 將 big5 轉碼為 utf8
screen 支援的字集包括 eucJP, SJIS, eucKR, eucCN, Big5,
KOI8-R, CP1251, UTF-8, ISO8859-2, ISO8859-3, ISO8859-4,
ISO8859-5, ISO8859-6, ISO8859-7, ISO8859-8, ISO8859-9,
ISO8859-10, ISO8859-15, jis
詳情請參考 screen manual page and source code.
結論:
有空要修一修 screen 的 big5 <--> utf8 的對應..
看起來問題很大,尤其是日文假名的部份。
另,使用 :encoding big5 utf8 來自動轉碼時,因為實際上還是以 big5
為內碼,所以輸入(可用嘸蝦米輸入法) [方方土] 這個字只會出現類似
HTML 裡 unicode 的表示方式。當內碼為 utf8 (:encoding utf8 utf8)
時就可以正確輸入與顯示。
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 編碼的內容時,可以
用 :encoding (ENCODING_NAME) 來動態更改目前所在 window 的
internal encoding。目前可用的編碼有 big5, utf8, eucJP, eucCN,
eucKR 等等。
除了 internal/display encoding 設為 big5/utf8 的方式之外,這個
功能還有另外一種用法;即利用 :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 (1 就沒有放 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.
Current Release: 4.7
· Announcement
· Installation Guide
· Release Notes
· Hardware Notes
· Errata
· 5.0R Schedule
BSD Sites
· FreeBSD Proj
· NetBSD Proj
· OpenBSD Proj
· FreeBSD Diary
· Damon News
· O'Reilly/BSD
· OpenBSD Journal
· BSD Today
· FreeBSDSearch.com
· BSDVault
· OS Online/BSD
· FreshPorts
· BSD Apps
· BSD Driver Database
· BSD Reseller
· FreeBSD Forums
· FreeBSD Tips
相關連結
· Debian Chinese
· CLE Proj
· Mandrake Chinese
· I18N Chinese
· suse-cjk
· debian-i18n


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 轉載新聞。將永久鏈結加入書籤。

發表迴響