作者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