Libxmlは何も悪くない
id:Hexa:20061024:1161693281
わざわざ検証をしてくださったようで,本当に有り難い.一応コメント欄になぜ文字化けをしたか書いておいたけれど,もう一度試してみるとそれだけでは不十分だったので,コッチでメモっておく.
エンコーディングはUTF-8と明記
参照先のソースコードを読んでもらえればわかるけれども,
doc.encoding = "UTF-8"
が無いと文字化けする.実際に試してもらえれば良くわかる.パースはUTF-8でするくせに,デフォの値は決めてくれてないのね.
標準出力では文字化けする
以下のコードを書いた(といっても,この間のコードにちょっと手を加えただけ).
require 'rubygems' require 'xml/libxml' doc = XML::Document.new doc.encoding = 'UTF-8' doc.root = XML::Node.new('goodslist') root = doc.root root << goods = XML::Node.new("goods") goods << name = XML::Node.new("name") name << '坊ちゃん' goods << price = XML::Node.new("price") price << '1050' goods << duedate = XML::Node.new("duedate") duedate << '2006-10-15' puts root doc.save('output2.xml', true) # ファイルに出力
それでは実行してみよう.
% ruby lxml.rb <goodslist> <goods> <name>坊ちゃん</name> <price>1050</price> <duedate>2006-10-15</duedate> </goods> </goodslist>
このようにターミナルでは文字化けしてて,本当に悲しい気分になる.けれども出力されたファイルを開いてみると…?
<?xml version="1.0" encoding="UTF-8"?> <goodslist> <goods> <name>坊ちゃん</name> <price>1050</price> <duedate>2006-10-15</duedate> </goods> </goodslist>
このように,ちゃんとボクにも「坊ちゃん」と読めるではないか!
てことで
文字化け問題は解決!