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

[palm-unix-j:00314] Re: KPilot 4.3b



三浦です。

In message "[palm-unix-j:00313] Re: KPilot 4.3b"
    on 02/05/25, Shun-ichi TAHARA (田原 俊一) <jado@flowernet.gr.jp> writes:
> From: Takuro Ashie <ashie@homa.ne.jp>
> Message-Id: <20020525021930.0a1d0976.ashie@homa.ne.jp>
> 
> > > まぁ多分、Palm(SJIS)とPC(EUC)とで、文字コードが異なってるケースって珍
> > > しいと思いますので、J-Pilotのように日本でハックしないことには始まらな
> > > いんでしょうね。やることは、LANGかLC_CTYPEを見て、適宜 iconv に通すだ
> > > けなんですが…(gnumericとかのスプレッドシートのExcelファイル回りがこう
> > > いう実装になってる)
> > 
> > 最近のpilot-linkにはiconvを使った文字コード変換機能が実装されています.
> > (libpisock/util.c)
> > 
> > これはどうも GNOME の Evolution のためにhackされた物では無いかと
> > 邪推しています.
> 
> あ、なるほど、そういうアプローチもアリですね。

わたしもpilot-linkにコードを入れる方がすなおだと思いました。
 
> > で、Evolutionではこの機能が使われているのですが、Palm側の内部コードが
> > CP1252 にハードコードされているため、そのままでは日本語は通りません.
> > 
> > #define PILOT_CHARSET "CP1252"
> > 
> > となっている所を適当に SHIFT_JISとかに変えると、とりあえずEvolutionでは
> > 日本語が通るようになるようです.
> 
> gnumericでは、こんな感じですね。
> 
>     char *lang;
>     char const *locale = setlocale (LC_CTYPE, "");
>     char const *lang_sep = strchr (locale, '.');
>     if (lang_sep)
>         lang = g_strndup (locale, lang_sep - locale);
>     else
>         lang = locale;
> 
> で、lang と iconv に与える codepage の対応表を持ちます。
> 
> 日本語だと、"japan", "japanese", "ja", "ja_JP" に対して CP932(SJIS)を
> 対応させればオッケー。デフォルト値を CP1252 にしとけばいいんでしょうね。

Jpilot だと、上記 PILOT_CHARSET相当のデフォルト値がCP1252ですが、
設定でかえられるようになっています。
手元のコードでは、J-OSか否かも切り替えられるようにしています。
まだ、印刷部分の日本語化がぜんぜんできていないので、公開してませんが...

この部分のポイントは、 Palmの方が 日本語PalmOS か, J-OSか CJK-OSかによって
処理を切り替える必要があるということで、Localeとは独立のはずです。

gnumericのようにlocaleを使う方法は、望ましくないと思います。

Hiroshi Miura  --- http://www.da-cha.org/ 
NTTDATA Corp. Marketing & Business Strategy Part, Strategy Group  --- miurahr@nttdata.co.jp 
My Life is for my wife. The network is used for my life. 
Key fingerprint = 9117 9407 5684 FBF1 4063  15B4 401D D077 04AB 8617