加藤(大阪)です。 Mon, 16 Dec 2002 23:25:20 +0900 付 Masaki SHINOMIYA <shino@xxxxxx> さんのメールより: > シノバーです > > On Mon, 16 Dec 2002 01:56:38 +0900 > Masaki SHINOMIYA <shino@xxxxxx> wrote: > > xml-io.cの中で new xml_parser を通すところだと思うのですが、 > > 古いparserでは読み込みで失敗、 > > 新しいparserでは読み込み正常で書き込みに失敗しているところから、 > > これらを使い分ければ逃げられないかと思ってみたりしますが… > > そうではなく、やはり読み込みで問題が生じているようです。 > たとえば「あ」の1文字をgnumeric形式で保存しますと > gnumericの新旧、あるいはxml_parserの新旧で同じものができます。 > これを古いparserでは「あ」が復元できますが > 新しいparserでは正しく復元できないようです。 > すなわち旧バージョンの日本語を含んだgnumeric形式ファイルは > 素のgnumeric-1.0.11では読めない(と思う)。 新旧の xml-io.c の diff を取ると、 gboolean xml_parser_flag; xml_parser_flag = xmlUseNewParser (TRUE); xmlUseNewParser (xml_parser_flag); の 3行だけが違うようで、この部分は gnumeric_xml_read_workbook 関数の 中に有り、やはり読み込み時に新しい xml_parser を使うことにより文字化けを 起こしている、のでは無いかと。 > 本家の gnumeric-1.0.11.tar.bz2 を展開、./configure, make, make install > でインストールすると/usr/local以下にインストールされるので > /usr/bin/gnumericで旧、/usr/local/bin/gnumericで新が立ち上がるので > このあたりのテストができます。 > 履歴を保存する ~/.gnome/Gnumeric は共通ですので注意が必要ですが。 > (正確さを期するなら都度~/.gnome/Gnumericを消去?) > # /usr/local/lib/gnumeric/1.0.11-bonobo/plugins/guile は > # エラーメッセージが邪魔なのでディレクトリごと消しちゃったほうが良いです。 自分の環境では何故か、適合してるはずの libole2 が認識されず、./configure 出来ませんでした・・・ > 「あ」の1文字をgnumeric形式で保存します。 > これを仮に a.gnumericとします。これを a.xml.gz とファイル名を変え、 > gunzipすると a.xml ができます。これを覗いてみると > ¤¢ が見付かります。 > 「あ」のeuc-jpコードは16進表記で a4a2、 > 1byteづつ10進表記すると164,162となります。 > > この保存ファイルはgnumericの新旧、あるいはxml_parserの新旧で同じです。 > これを読み込むさいの新旧の処理が違うみたいです。 時間が無く、詳細なテストは出来ていませんが、全角1文字を、読み込み時に、 何故か別の全角2文字にエンコードしてるみたいです。 ところで、新 xml_parser の本体は、libxml2(相当)なのでしょうか? だとすればちょっと憂鬱です。 gnumeric-1.1.x ではうまく直ってるのか、とか・・・。 --- 加藤 雅 <mkato@xxxxxxxxxxxxx> http://isweb15.infoseek.co.jp/diary/add10/rox/