作者albyu ()
看板HANGUKMAL
標題Re: 有關 PTT 是否能輸入韓文的問題
時間Thu Feb 28 18:01:49 2008
看來大家對這個能夠顯示韓文的 client 的需求倒是挺迫切的
雖然我現在能夠控制 PCMan X 讓它在某些情況下改用 EUC-KR 來顯示韓文
但目前仍屬實驗性的階段,也還不能直接用輸入法在 PCMan X 輸入韓文
那張截圖上的韓文,是我先用別的 client 打進去,PCMan X 目前只能顯示而已
關於輸入韓文的部分我現在正在研究中,已有了些許眉目
還有一個重要的問題,PCMan X 目前僅能在 Linux 和 FreeBSD 上面運作
由於我個人並不使用微軟 Windows 作業系統
因此在 Windows 平台上的 client 開發可能暫時不會這麼快動手
我預計會從 Windows 上的 Open PCMan 著手來改
不過 Open PCMan 和 PCMan X 是完全不同的東西
內部的程式碼和編碼處理架構截然不同,等於是要寫兩份程式
如果有人要參與的話,我想基本的能力可能還是需要熟悉 C++ 程式語言
因為 PCMan X 和 Open PCMan 都是用 C++ 撰寫的
至少要能夠看懂 C++ 的語法,才能了解它的處理方式並著手修改
關於我上一篇文章,為什麼能夠讓中文和韓文同時出現,我簡單說明一下
基本上我的作法很簡單,我先找出 PCMan X 的程式碼裡面
哪個部分是負責將 BIG-5 轉換成 UTF-8 讓系統可以顯示出中文來
而後我再加了幾行程式碼,讓 PCMan X 在繪製螢幕的某些地方的文字時
不是從 BIG-5 轉到 UTF-8,而是從韓文的 EUC-KR 編碼轉到 UTF-8
這樣,只要 EUC-KR 的字串出現在某些位置
PCMan X 就會把它們從 EUC-KR 轉成 UTF-8,從而顯示出正常的韓文出來
不過,光是只有在特定位置顯示出韓文還是不夠
主要還有幾件事情要做:
一、設計編碼切換的 control sequence
這是要通知 client 的終端機何時要切換到韓文,何時要回到中文的控制碼
我正在考慮的是,是不是要利用 ANSI 控制碼的方式來控制編碼的切換
也就是設計一個特殊的 ANSI 控制碼,當 client 讀到這個控制碼時
就會進行顯示編碼的切換
若要設計成具有通用性,則控制碼本身最好能帶有欲切換的編碼名稱
比如說名稱為 EUC-KR 就能切到韓文,名稱為 KOI-8 就能切到俄文等等
這個地方是未來使用上最重要的部分,可能要先有完善的規畫
二、編碼切換控制碼的處理函式
訂定了切換的控制碼,接下來就是要寫程式,修改 PCMan X
讓它能夠認得切換控制碼,並做顯示編碼的切換
三、輸入文字之編碼切換
上面的步驟僅實作讓終端機能夠顯示出韓文,但還不能輸入韓文
還需要再修改 PCMan X 接受使用者輸入內容時的編碼轉換的程式部分
這部分應該是最大的困難點之所在
終端機必須要能夠知道使用者現在是在輸入哪一種文字
可能的方法有幾個,一個是設計一個選單,讓使用者選擇要輸入何種文字
另一個方法就是自動偵測,不過相對地難度也高
現在我們在 PCMan、KKMan、PieTTY 等程式裡面不能輸入韓文的原因就在這裡
系統接收到韓文的輸入,但沒辦法把它轉成 BIG-5 的編碼
這部分可能要花不少時間來實作
有興趣的人,或是有任何建議,非常歡迎一起來討論
有能力開發 Windows 程式的人,請不吝參與修改 Open PCMan 的行列
因為我實在是不大會使用 Windows.....
希望在 BBS 能夠自由自在輸入各種語言文字的那天早一點到來啊!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.80.33
1F:→ rickhsu:我能幫上忙的就是轉文啦.轉了Pttsuggest和Pcman版 02/28 18:15
2F:→ rickhsu:我有個想法..其實客戶端只要能夠告知使用者現在是位於 02/28 18:28
3F:推 sdfg246810:很好很強大.....真佩服阿~~~ 02/28 18:29
4F:→ rickhsu:韓文區..中文輸入會變成亂碼請切換至韓文輸入法 02/28 18:29
5F:→ rickhsu:至於在中文區本來就不能輸入韓文..所以也還好... 02/28 18:30
6F:→ rickhsu:也就可以單純化..先讓使用者的大腦來切輸入法 02/28 18:31
7F:→ rickhsu:這樣第一個版本堪用會快的多... 02/28 18:32
8F:→ rickhsu:我還想到要是編輯器所見及所得,那代表標籤必須有兩種. 02/28 18:38
9F:→ rickhsu:一個是編輯用的a另一種是顯示用的b.越想越複雜... 02/28 18:39
10F:→ rickhsu:萬事起頭難.希望albyu能打造堪用品..windows應該有人會吧 02/28 18:44
11F:推 changwenchi:我直接找我學弟來會不會比較快...把他抓過來問當初到 02/28 19:12
12F:推 changwenchi:底是怎麼寫的... 02/28 19:13
13F:推 changwenchi:我直覺覺得顯示不會是問題,但是輸入法會是個問題... 02/28 19:27
14F:推 changwenchi:對嗎? 02/28 19:28
15F:推 elvies:對不起~ 我電腦很弱 Q_____________Q 02/28 20:06
16F:→ elvies:精神支持!!!!!!!!!!!!加油!!!!Fighting!!! 02/28 20:06
17F:推 changwenchi:我一定要成功go 02/28 20:21
18F:推 leader81:我也只能精神上支持 對程式語言不懂 呵 02/28 20:25
19F:推 Fred:請不要忘記 MAC 的使用者... AlienBBS 也順便一下 >"< 02/28 22:11
20F:→ albyu:Mac 我真的沒辦法,沒有 Mac 機器..... 02/28 22:19
21F:→ rickhsu:先完成linux的...mac現在也是unix like只要opensource 02/28 22:20
22F:→ rickhsu:就會有人去移植的啦..反倒是windows還比較難... 02/28 22:21
23F:→ rickhsu:輸入法應該是可解決的pietty也可以用內建輸入法輸入啊 02/28 22:24
24F:→ rickhsu:視窗上的複製貼上判斷才困難吧.中韓從視窗上要貼到bbs 02/28 22:26
25F:→ albyu:Windows 會自己做 Unicode 到程式所使用的 locale 編碼轉換 02/28 22:28
26F:→ rickhsu:就不太可能了..沒有標籤可供程式作判斷.. 02/28 22:28
27F:→ albyu:因此,你只要確定你的程式使用的編碼有包含韓文就可以了 02/28 22:29
28F:→ albyu:如果你用 PieTTY,但編碼設成 BIG-5 是沒辦法輸入韓文的 02/28 22:30
29F:→ albyu:複製貼上的部分還是有一樣的問題,不是要使用者自己決定編碼 02/28 22:31
30F:→ albyu:就是要寫 encoding detection 的程式來辨斷 orz 02/28 22:32
31F:→ rickhsu:作編碼偵測聽就覺得是大工程了,,.我覺得先讓使用者決定 02/28 22:35
32F:→ rickhsu:但是儘量設定成單鍵決定應該就堪用了..先求能用最重要... 02/28 22:37
33F:→ rickhsu:可以做到按某鍵就切換編碼同時幫你呼叫對應的輸入法嗎? 02/28 22:39
34F:→ rickhsu:說實在的我也不太懂...想能夠用就很高興了.. 02/28 22:46
35F:→ rickhsu:技術細節就交給albyu了.. 02/28 22:47
36F:→ rickhsu:加轉programming那應該高手如雲.. 02/28 22:53
37F:→ rickhsu:加轉C_and_CPP同上 02/28 23:03
38F:→ albyu:好消息!我已經把 PCMan X 改出來了,現在已經可以輸入 02/28 23:43
39F:→ albyu:EUC-KR 的韓文了..... 02/28 23:43
40F:→ albyu:EUC-KR 韓文的複製貼上也 OK 了 02/28 23:57
41F:推 sdfg246810:人民的救星.....真是辛苦了 02/29 00:05
42F:推 elvies:EUC-KR是啥 XD 我是PCMan Combo 2007 囧 albyu大加油唷~ 02/29 00:51
43F:→ rickhsu:這麼快就改好了...太偉大啦....起立致敬ing.... 02/29 06:52
44F:推 changwenchi:那我們端要怎麼改啊? 02/29 08:05
45F:→ rickhsu:等albyu釋出linux版source..再找人改成windows用的 02/29 08:49
46F:→ rickhsu:其實這種客戶端很棒啊..只要是bbs都可以用... 02/29 08:50
47F:→ rickhsu:因為工作都是在客戶端上完成..所以跟其他bbs的相容性很高 02/29 08:50
48F:→ albyu:等 Linux 版完工,我可能會找台機器來改 Windows 版的 02/29 09:01
49F:→ rickhsu:立正致敬ing..... 02/29 09:05
50F:推 changwenchi:等啊等啊~~ 02/29 15:14
51F:→ albyu:哈哈,我卡關啦!沒想到之前認為輸入是最困難的地方 02/29 17:24
52F:→ albyu:結果現在反而是卡在編碼切換的顯示部分上面 02/29 17:25
53F:→ albyu:下午連續改了好幾個小時,PCMan X 變成當機頻仍 Orz.... 02/29 17:26
54F:→ albyu:不過還好,我剛剛已經找出當機的原因了,只能說 PCMan X 的 02/29 17:26
55F:→ albyu:開發者的程式功力太過玄妙,不是隨隨便便就能輕鬆掌握的 02/29 17:27
56F:推 changwenchi:有需要的話我再去抓學弟...加油加油gogogo 02/29 17:31
57F:→ rickhsu:加油加油gogogog.... 02/29 17:34
58F:推 Energiya:不過有一點想問 為什麼不直接用unicode顯示韓文? 02/29 17:36
59F:→ Energiya:應該說 在儲存成直接存成unicode tag之下讀取不用轉換 02/29 17:37
60F:→ albyu:樓上提到的是非常好的問題,為何不用 Unicode 系列編碼? 02/29 17:57
61F:→ albyu:原因在於,UTF-8/16等編碼的高位元組定義和Big-5有衝突 02/29 17:58
62F:→ albyu:如果直接寫入Big-5的串流,會產生錯誤 02/29 17:59
63F:→ rickhsu:加轉Pttcurrent..ptt程式討論區 02/29 19:39
64F:推 changwenchi:要不要直接找英吐 02/29 20:20
65F:推 abcdefghi:多國語言的問題,已經20-30年了,目前最廣為接收的方案就 02/29 20:49
66F:→ abcdefghi:是unicode/utf8,為了一時的方便,走iso2022的回頭路,只是 02/29 20:52
67F:→ abcdefghi:造成未來有更多的歷史包伏,我建議可以先把bbs的資料轉成 02/29 20:53
68F:→ abcdefghi:unicode,再改client,mozilla的自動判別charset的準確度 02/29 20:55
69F:→ abcdefghi:還不錯,可以整合進pcman,自動判別非unicode的bbs 02/29 20:56
70F:→ abcdefghi:以現在ptt一站獨大的局面,只要ptt改完了,大概就差不多了 02/29 20:58
71F:→ rickhsu:請問樓上ptt改上面的東西對於目前維護ptt的人員來說是 02/29 21:34
72F:→ rickhsu:像開腦手術的大工程還是像除斑雷射的小工程哪一種等級? 02/29 21:37
73F:→ rickhsu:另外一個問題是要去哪裡看ptt對於多語言處理支援的規劃 02/29 21:42
74F:→ rickhsu:我目前僅知pttsugguest有打m的沒有看到類似的... 02/29 21:44
75F:推 abcdefghi:我對ptt的站務和目前的程式不太清楚,不過charset的問題, 02/29 22:48
76F:→ abcdefghi:只在file和socket的input和output相關的地方小改就可以 02/29 22:51
77F:→ abcdefghi:支援utf8,理論上程式的問題應該不大才對,我想主要應該是 02/29 22:53
78F:→ abcdefghi:看站方的意願. 02/29 22:56
79F:→ rickhsu:喔...如果程式問題不大..是這樣那會放20-30年還是原樣... 02/29 23:03
80F:→ rickhsu:直覺來想不太合邏輯.寫程式利害又聰明人那麼多... 02/29 23:04
81F:→ rickhsu:還是這個問題不屬於技術層次的問題? 02/29 23:06
82F:→ albyu:技術上應該是不難,不過要 PTT 所有儲存的資料全部轉換成 02/29 23:10
83F:→ albyu:UTF-8 可能是站方意願不高的原因吧 02/29 23:11
84F:→ albyu:而且現在很多終端機,例如 PCMan X 本來就支援 UTF-8 不用改 02/29 23:11
85F:→ rickhsu:我們不用理想方案啦...堪用的就好啦...靠ptt站方改可能 02/29 23:14
86F:→ rickhsu:不知道實現之日為何..包袱也是可以接受啦 02/29 23:15
87F:→ rickhsu:現在我都搞不清楚了...到底ptt修改程式是必要的還是選項 02/29 23:21
88F:→ rickhsu:的一種比較理想的方案? 02/29 23:22
89F:→ rickhsu:如果只是選項..我建議先改改客戶端來用用... 02/29 23:23
90F:→ rickhsu:畢竟我想站方人員對於這個問題急迫度看法可能與使用者的 02/29 23:25
91F:→ rickhsu:的角度不同.很難去準確的預測. 02/29 23:26
92F:→ rickhsu:還是版主你再去問問看...看看ptt程式維護人員的反應? 02/29 23:27
93F:推 abcdefghi:樓上,你現在的想法,就是十年來bbs一直沒改成utf8的原因. 02/29 23:28
94F:→ rickhsu:是喔...不好意思啦...我是外行人... 02/29 23:32
95F:→ rickhsu:那要怎麼作..能在最快的時間內能夠完成?專家的意見是? 02/29 23:33
96F:推 changwenchi:我現在有名的程度可能只有組長會理我,至於站長...我 03/01 08:29
97F:推 changwenchi:還沒有貢獻到站長會理我吧!只是寫ptt的是我學弟,我 03/01 08:29
98F:推 changwenchi:可以靠這層關係去問。我覺得應該找一個日子直接找個機 03/01 08:30
99F:推 changwenchi:器(電腦)實作,光靠文字,我已經跟不上了... 03/01 08:31
100F:推 changwenchi:說錯!是pcman 03/01 08:32