vine-users ML アーカイブ



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

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

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 ができます。これを覗いてみると
> &#164;&#162; が見付かります。
> 「あ」の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/