仕事で使っている MacBook Pro 上で以下を ruby -Ku
で実行すると、
XML::Node
インスタンスを直接文字列にしようとする箇所で、
やはり非 US-ASCII な部分が参照の形で表示される。
# -*- coding: utf-8-unix -*-
require 'xml/libxml'
doc = XML::Document::new doc.encoding = 'UTF-8' doc.root = XML::Node::new('bookshelf')
book = XML::Node::new('book') book << XML::Node::new('title') << 'バガボンド 24' book << XML::Node::new('author') << '井上 雄彦 / 吉川 英治' book << XML::Node::new('price') << 550 doc.root << book
book = XML::Node::new('book') book << XML::Node::new('title') << 'ココロミくん' book << XML::Node::new('author') << 'べつやく れい' book << XML::Node::new('price') << 1050 doc.root << book
puts '>>>>> puts doc.root:' puts doc.root puts '>>>>> puts doc:' puts doc
libxml2 を自分でインストールしたら、
XML::Node
インスタンスを直接文字列にしても人間が読める値になった。
libxml_so.bundle が見る libiconv が libxml2 が見る libiconv と
違った (libxml_so.bundle の中身を読んでの予想) のが原因だったのかな?
どうもそんな単純な問題じゃないみたいだ。
XML::Node
インスタンス内で
非 US-ASCII な文字を参照の形で扱っていた時は、
XML::Node
インスタンスへの直接的な入力に関して
UTF-8 以外のマルチ・バイトな文字コード
(ISO-2022-JP, EUC-JP など) にも対応できてたけど、
UTF-8 を直接扱うようになった今はそれらに対応できてない。
まあ、当たり前と言えば確かにそうなんだけど…。
libiconv, zlib, readline を事前に入れておくと吉 (まあ、デフォルトで入ってますが)。
$ wget -c ftp://xmlsoft.org/libxml2/libxml2-2.6.27.tar.gz $ zcat libxml2-2.6.27.tar.gz | tar xvf - $ cd libxml2-2.6.27/ $ ./configure --without-python $ make && make check $ sudo make install
もちろん CFLAGS
はお好みで。
libxml2 を事前に入れておくと吉 (これもデフォルトで入ってますが)。
$ wget -c ftp://xmlsoft.org/libxml2/libxslt-1.1.18.tar.gz $ zcat libxslt-1.1.18.tar.gz | tar xvf - $ cd libxslt-1.1.18/ $ ./configure --without-python $ make && make check $ sudo make install
もちろん CFLAGS
はお好みで。
libxml2 の configure が libxslt のコマンドを見にいってるみたいなので、 libxslt 入れた後に libxml2 を入れ直した。
MMX や各 SSE, 3DNow! などをサポートした x86, x86-64 環境向けアセンブラ。 約 2 週間ぶりの version up。