[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [I18n] Simple input methods for X11 available (fwd)



:        我之前所提的简单的说,就是做各种内码的转换,之所以提出”输入法 
:        内部字元集”是因为,不论采用何种编码(UCS-4),都会遇到缺字的问题 
:        ,也就是在 A 字元集有 aa,而 B 字元集却没有 aa,就算选择 UCS-4  
:        当内码也不是万灵丹,毕竟 UCS-4 没定的字,没有就是没有,所以一  
:        由另一套字元集转成 UCS-4 时,掉字是可想而知的,所以让使用者有  
:        选择自己喜欢的字元集当核心是比较好的,或者在做内码转换时, aa     
:        由 A => B => C 时,万一 B 缺了 aa 这个字,最后转到 C 时,只要  
:        C 定这 aa 这个字,也应该要能转换成功,或者,如果你假设 UCS-4
:        一定是各字元集的 superset ,那上述的问题也就不会发生罗。。:)

您说的没错,这是下一版 xcin 的重要目标之一。事实上,我们打
算将这些部分做成一个 lib, 定好适当的 API, 让所有需要做东方
语系 (特别是中文) 字集转换的应用程式都可以呼叫使用。

本来这些字集转换的工作是要交给 libc 的 iconv() 来做的,但我
们发现 iconv() 恐怕不符使用,因此才想说写一个独立的 lib 来
用。主要正是因为掉字的问题。一个功能正常的 iconv(), 只要是
A 字集与 B 字集的转换管道可以开启成功时,则一定可以保证 A 字
集每个字都可以转到 B 字集的字上去,反之亦然,不论它是用什么
方法转的。然而,问题出在 A B 两字集万一大小不一样时。假设 A
字集大于 B 字集,则很可能 A 中 a1, a2 两字都对到 B 字集的 b1,
反之 B 字集的 b1 只能对到 A 字集的 a1, 则:

	a2 ==> b1 ==> a1

a2 这个字转过去再转回来就不见了 (变成 a1 了),也就是所谓的掉
字问题。这是 iconv() 先天的限制。但做为一个输入法,我们应该要
提供机会让使用者在打 b1 时,可以选择要以 a1 或 a2 来输出。因此,
我们需要一个新的 lib 与 API。

T.H.Hsieh

-- 
| This message was re-posted from debian-chinese-big5@lists.debian.org
| and converted from big5 to gb2312 by an automatic gateway.



Reply to: