vine-users ML アーカイブ



[vine-users:057034] Re: gnumeric xml 保存時の日本語 文字化け及び脱落

  • From: 加藤 雅 <mkato@xxxxxxxxxxxxx>
  • Subject: [vine-users:057034] Re: gnumeric xml 保存時の日本語 文字化け及び脱落
  • Date: Thu, 19 Dec 2002 00:23:22 +0900
加藤(大阪)です。

シノバーさん、お世話を掛けました。gnumeric-1.0.11-0vl1 のコンパイル、
make clean し、Makefile を削除し、./configure からやりなおしたら、
すんなりインストール出来ました。

どうやらその必要は無かったようですが (^ ^;

Wed, 18 Dec 2002 16:50:04 +0900 付
Masaki Shinomiya <shino@xxxxxx> さんのメールより:

> シノバーです
> 
> ちょっと見えてきました。
> 
> まず、新旧parserのテストですが、簡単な方法が見付かりました。
> libxml(-1.8.16)は旧来のparserと
> libxml2からバックポートしたという新parserの両方を内蔵しています。
> 普段は旧parserを使いますが、環境変数で新parserの使用を強制できます。
> 
> 今VinePlusにあるgnumeric-1.0.11-0vl2あるいは昔のバージョンでもよい。
> そのままでは旧parser。これを次のように起動すると新parserを使います。
> $ LIBXML_USE_NEW_PARSER=1 gnumeric
> 
> On Tue, 17 Dec 2002 01:38:13 +0900
> 加藤 雅 <mkato@xxxxxxxxxxxxx> wrote:
> > 新旧の xml-io.c の diff を取ると、
> >  	gboolean xml_parser_flag;
> >  	xml_parser_flag = xmlUseNewParser (TRUE);
> >  	xmlUseNewParser (xml_parser_flag);
> > の 3行だけが違うようで、
> 
> というのはこの環境変数LIBXML_USE_NEW_PARSER=1 をセットすることと等価です。
> # libxmlのソース parser.c の最後のほうを見るとこれが分かりました。

libxml のソース取り寄せて確認できました。
flag を TRUE にしておけば、parser に仕事を依頼する時、新 parser にアクセスし、
終われば元にもどす、FALSE にしておけば、旧 parser にアクセス、と言うこと
のようですね。
で、実際の新旧切り替えは xmlParseChunk の入り口で行ってる、ってとこでしょうか?

> # オープン・ソースって便利ですね。

まったくです。で無ければ、どうなってるんだろうかって疑問を持つ権利すら
奪われてるも同然ですからね。

> この194が加えられるのは、iso8859-1(?)→UTF-8への変換みたいです。
> たとえば0xa7=167はiso8859-1(ASCII?)では半角「§」です。
> これに0xc2をくっつけて0xc2a7は同じ文字のUTF-8コードらしい。
> ASCII文字(0-128)では変なバイトが付け加えられていない理由もこれで分かる。
> ASCII文字(0-128)はUTF-8コードでも同じだから。
> 
> けっきょくlibxml新parserのバグではなく仕様みたいです。
> 入力をiso8859-1(あるいはASCII?)とみなしてUTF-8コードに変換して出力するという。
> # libxml2 ではどうなっているのか気になりますね。

parser.c には、やたら UTF8 の文字が見受けられますね。libxml2 の方は尚更、と言う
気がしてしまいます。

消し残している Kondara 2.0 に UTF-8 で login したら、GNOME メニューの日本語が
文字化けしていて、'a'の 上に '~'を載せた文字が一杯でした。
シノバーさんが言ってられた 'A'の上に '^'と言うのと同じなんでしょうね。

> gnumeric側で受け取った上位バイトを落すというのが現実的対処法と思います。
> 
> # gnumeric開発元では問題を認識はしているようですが、
> # gnumeric側でやるつもりはないみたい?

UTF-8 と言う事になれば問題は深刻ですね・・・
「上位バイトを落す」ように工夫しても gnumeric のバージョンが上がる度に
パッチをあてる、そうしたところで将来的には、Vine の gnumeric で作った
ファイルは、他所では読めない、と言うことが起こりそうです。

結局 xls 形式(shift-jis ?) で残しておくのが一番確実、としたら、あまり
良い感じはしません。

# gnumeric だけの事ではないけど、日本語文字コードの問題はどうなるんだろ。
# オープン・ソース の世界にも、国別力関係みたいなの感じて、ちょっと淋しい…

--- 
加藤 雅 <mkato@xxxxxxxxxxxxx>
	http://isweb15.infoseek.co.jp/diary/add10/rox/