将转义的XML实体转换回UTF-8

所以我在XML文件中有这个UTF-8字符串:

Horrible place. ☠☠☠ 

当我将它提供给外部应用程序时,有趣的角色会以XML实体的forms返回:

 Horrible place. ☠☠☠ 

在Ruby中,如何将该字符串转换回UTF-8? 这可能是一个非常简单的解决方案,但我无法在标准库中找到任何东西; 例如。 CGI.unescapeHTML (适用于像>这样的东西)似乎完全忽略了它们。

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

好吧,因为它是XML编码的,我会选择XML解析器:

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

CGI.unescapeHTML工作得很好; 您正在使用的控制台可能无法显示unicode字符。

试试这个,它应该工作正常:

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