2010-12-30 2 views
3

にXMLエンティティをエスケープXMLエンティティとしては、だから私は、XMLファイル内でこのUTF-8文字列を持っているバックUTF-8

Horrible place. ☠☠☠ 

この文字列をUTF-8に変換するにはどうすればよいですか?おそらくこれは本当に簡単な解決策ですが、私は標準ライブラリで何も見つけることができません。例えば。 CGI.unescapeHTML>のようにうまく機能する)は、それらを完全に無視するようです。

ree-1.8.7-2010.02 > CGI.unescapeHTML('>') 
=> ">" 
ree-1.8.7-2010.02 > CGI.unescapeHTML('☠') 
=> "☠" 

答えて

4

まあ、それのXMLは、私はXMLパーサのために行くだろうとエンコード以来:

require 'nokogiri' 

frag = 'Horrible place. ☠☠☠' 
doc = Nokogiri::XML.fragment(frag) 
puts doc.text 
# >> Horrible place. ☠☠☠ 
+0

賢い、ありがとう!エンティティを保持していた 'doc.to_xml'を呼び出していました。 – jpatokal

+0

これは 'to_xml'がXML表現を作成するためです。 –

2

CGI.unescapeHTMLは問題ありません。使用しているコンソールがおそらくユニコード文字を表示できません。

これを試してみて、それが正常に動作する必要があります:

File.open("d:\\11.txt", 'w') {|f| f.write(CGI.unescapeHTML('☠')) } # => ☠ 
+0

が私のために動作しません、ファイルは述べています"☠"出力文字列をバイトに分割します: 'CGI.unescapeHTML( '☠')。bytes.each {| b | print "#{b}"} => 38 35 120 50 54 50 48 59'となります。これはRails 2.3で、どのバージョンを使用していますか? – jpatokal

+0

それは変です。私はルビー1.8.7(2010-08-16パッチレベル302)[i386-mingw32]を使用しました。 – Zabba

関連する問題