将转义的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('☠')) } # => ☠