Masanari Yamamoto
h0131****@ice*****
2005年 2月 17日 (木) 21:37:45 JST
山本です。 On Thu, Feb 17, 2005 at 07:26:10PM +0900, Etsushi Kato wrote: > On Thu, Feb 17, 2005 at 04:53:21PM +0900, > Takuro Ashie <ashie****@homa*****> wrote: > > > libcharsetのlocale_charset()相当の関数をuim内に持つというのも一つの手で > > すが、0.4.6ではとりあえずlibiconvをインストールしてもらうのが良いのでは > > ないかと思います。 > > http://www.openi18n.org/subgroups/sa/locnameguide/final/CodesetAliasTable.html > の table を使って、適当に仕組みを作ってみました (全部使う必要はなかっ > たような気もしますけど…)。 > > uim_iconv_open() で、 encoding の alias 名をいろいろ使って iconv_open > を試す、というようになっています。Solaris9 のシステム iconv でも動くよ > うになったと思います。 エンコーディング名はstrcasecmpで比較した方がいいかもしれません。例えば、 SolarisのSHIFT_JISはPCKですが、uim-encoding.hにはpckしかありません。 *** uim-func.orig 2005-02-17 20:54:03.000000000 +0900 --- uim-func.c 2005-02-17 21:14:16.000000000 +0900 *************** *** 254,260 **** for (i = 0; alias_tocode[i]; i++) { for (j = 0; alias_fromcode[j]; j++) { ! if (!strcmp(alias_tocode[i], alias_fromcode[j])) { found = 1; break; } --- 254,260 ---- for (i = 0; alias_tocode[i]; i++) { for (j = 0; alias_fromcode[j]; j++) { ! if (!strcasecmp(alias_tocode[i], alias_fromcode[j])) { found = 1; break; } *************** *** 294,300 **** for (i = 0; (alias = uim_encoding_list[i]); i++) { for (j = 0; alias[j]; j++) { ! if (!strcmp(alias[j], encoding)) return alias; } } --- 294,300 ---- for (i = 0; (alias = uim_encoding_list[i]); i++) { for (j = 0; alias[j]; j++) { ! if (!strcasecmp(alias[j], encoding)) return alias; } } -- 山本将也