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 回答