所以我在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('☠')
=> "☠"
答案 0 :(得分:4)
好吧,因为它是XML编码的,我会选择XML解析器:
require 'nokogiri'
frag = 'Horrible place. ☠☠☠'
doc = Nokogiri::XML.fragment(frag)
puts doc.text
# >> Horrible place. ☠☠☠
答案 1 :(得分:2)
CGI.unescapeHTML
效果很好;您正在使用的控制台可能无法显示unicode字符。
试试这个,它应该可以正常工作:
File.open("d:\\11.txt", 'w') {|f| f.write(CGI.unescapeHTML('☠')) } # => ☠