[Anthy-dev 518] Re: uim: iconvを素通し

Back to archive index

TOKUNAGA Hiroyuki tkng****@xem*****
2004年 2月 6日 (金) 19:34:56 JST


On Fri, 06 Feb 2004 18:32:56 +0900
YamaKen <yamak****@bp*****> wrote:

> > > ・変換対象文字列のエンコーディングがtoとfromで同じだったらiconv
> > >   を使わずそのまま文字列をアプリ側に渡す
> > > 
> > > ・アプリ側で各IMのネイティブエンコーディングを知るために以下の
> > >   APIを追加
> > > 
> > >   const char *uim_get_im_encoding(uim_context uc, int nth);
> > 
> >  uim_code_convがiconvに依存してしまっている現状ではどうしようもない
> > のですが、ここらへんをもうちょっとなんとかすれば、アプリ側でIMのネイ
> > ティブエンコーディングを知る必要はないんじゃないかと思うのですが、ど
> > うでしょう?
> 
> ちょっと徳永さんの言わんとしている事が理解できてませんが、私が意
> 図しているのは以下のような処理です。
> 
> 1) uim_get_im_encoding()でIM毎のエンコーディングを知る
> 
>    native_encoding = uim_get_im_encoding(uc, nth);
> 
> 2) 1)で得たエンコーディングに応じたQTextCodecを用意する(例えば
>    QEucJpCodec)
> 
>    QTextCodec codec = QTextCodec::codecForName(native_encoding);
> 
> 3) IMから送られてきた文字列を、2)のコーデックでQStringに変換する
> 
>    QString qt_str = codec->toUnicode(im_native_str);
> 
> iconvに代わる汎用変換インタフェイスを別途用意しない限りは上記の
> ような流れで処理するしかないと思うんですが、もっと別の次元の話で
> すか?

 私が考えてるのは以下のような変更です。

 uim_context構造体にiconv_t convというメンバがありますが、これを
uimconv_t convとかそんな感じの名前に変える。

 環境によってはtypedef uimconv_t iconv_t、またある環境によってはtypedef
uimconv_t QTextCodec、という感じでifdefでuimconv_tの実体を変える。

 現在iconvを使って処理しているuim_code_convやその他いくつかの関数を
ifdefで書き換える。

 どうせconfigure時にiconvの有無やiconvに代わるエンコーディング変換機能の
有無のチェックをしなければならないならば、これでも問題なく(そして変更点
は少なく)問題が解決できると思います。

 ここまで書いてから気づいたのですが、ヤマケンさんが考えてるのは、
uim_contextのメンバのconvはまったく使わずに、ブリッジ側でエンコーディン
グを変換するという方法ですよね。たしかにその方がlibuimは変更せずに済むの
で楽なような気もするのですが、将来的にはどっちが楽なんでしょう?もうちょ
っと考えてみないと、私にはわかりそうにないです。


-- 
徳永拓之
http://kodou.net/



Anthy-dev メーリングリストの案内
Back to archive index