4

したがって、XMLファイルにこのUTF-8文字列があります。

Horrible place. ☠☠☠

そして、それを外部アプリケーションにフィードすると、面白いキャラクターがXMLエンティティとしてエスケープされて戻ってきます。

Horrible place. ☠☠☠

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

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

2 に答える 2

4

それはXMLでエンコードされているので、XMLパーサーを使用します。

require 'nokogiri'

frag = 'Horrible place. ☠☠☠'
doc = Nokogiri::XML.fragment(frag)
puts doc.text
# >> Horrible place. ☠☠☠
于 2010-12-30T02:14:05.860 に答える
2

CGI.unescapeHTML正常に動作します。使用しているコンソールは、Unicode文字を表示できない可能性があります。

これを試してみてください。正常に動作するはずです。

File.open("d:\\11.txt", 'w') {|f| f.write(CGI.unescapeHTML('☠')) } # => ☠
于 2010-12-30T00:54:22.960 に答える