dポイントプレゼントキャンペーン実施中!

教えてください。
Nokogiriというgemを使ってXMLを処理しています。

Nokogiriへの入力はUTF8なのですが、
XML処理後の出力が16進文字列に変わってしまうのです。

環境はLinux
(Linuxについてはあまり詳しくないので
情報が不十分かもしれません。すいません。)

16進文字列をUTF8に戻すこともできるのですが、
できれば、無駄な手間はかけたくありません。

もし、原因に心当たりがありましたら、
教えていただけると助かります。

Encoding.default_internal、
Encoding.default_externalなども怪しいと思います。

A 回答 (2件)

コードにおかしい点はありません。


本当に16進文字列になっていますか?pとかinspectで16進表示されているだけと言うことはないですか?
16進文字列になっているというのはどうやって判断しましたか?具体的に書いてください。

念のため、「具体的に」というのは他人がその文章を読んで全く同じ手順を実行できるという意味です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

結論から言うと、
問題は再現しなくなっていました。
PCを再起動すると治る問題だったのでしょうか・・・

お手数をおかけして
申し訳ありませんでした。

でも、半年Rubyを使ってみましたが、
ときどき、予想外に
UTF8文字列が16進文字列に置き換わる現象が
起きる気がします。

お礼日時:2010/03/05 09:15

本当に16進文字列に変わっているのなら、エンコードは関係ありません。


とりあえずコードを書いてください。あとRubyのバージョンも。
Encode.default_internalと書いているということは、1.9.1ですか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お察しの通り、Rubyのバージョンは1.9.1です。

ソースはこんな感じです。
# -*- coding: utf-8 -*-~
doc = Nokogiri::XML::Document.new(xml_str_input)
xml_str_output = doc.to_xml()

xml_str_inputはUTF8の文字列です。
xml_str_outputをファイル出力やputsしてみると、
16進文字列が入っています。
xml_str_outputのlengthと
ファイルの文字数は一致するので、
ファイル出力時点で
16進文字列になっているのではないようです。

分かりましたら、
教えていただけますと、助かります。

お礼日時:2010/03/04 21:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!