- 締切済み
UTF8が16進文字列に化ける(変わる?)
教えてください。 Nokogiriというgemを使ってXMLを処理しています。 Nokogiriへの入力はUTF8なのですが、 XML処理後の出力が16進文字列に変わってしまうのです。 環境はLinux (Linuxについてはあまり詳しくないので 情報が不十分かもしれません。すいません。) 16進文字列をUTF8に戻すこともできるのですが、 できれば、無駄な手間はかけたくありません。 もし、原因に心当たりがありましたら、 教えていただけると助かります。 Encoding.default_internal、 Encoding.default_externalなども怪しいと思います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
コードにおかしい点はありません。 本当に16進文字列になっていますか?pとかinspectで16進表示されているだけと言うことはないですか? 16進文字列になっているというのはどうやって判断しましたか?具体的に書いてください。 念のため、「具体的に」というのは他人がその文章を読んで全く同じ手順を実行できるという意味です。
- notnot
- ベストアンサー率47% (4900/10358)
本当に16進文字列に変わっているのなら、エンコードは関係ありません。 とりあえずコードを書いてください。あとRubyのバージョンも。 Encode.default_internalと書いているということは、1.9.1ですか?
お礼
回答ありがとうございます。 お察しの通り、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進文字列になっているのではないようです。 分かりましたら、 教えていただけますと、助かります。
お礼
回答ありがとうございます。 結論から言うと、 問題は再現しなくなっていました。 PCを再起動すると治る問題だったのでしょうか・・・ お手数をおかけして 申し訳ありませんでした。 でも、半年Rubyを使ってみましたが、 ときどき、予想外に UTF8文字列が16進文字列に置き換わる現象が 起きる気がします。