我使用Ruby(和Nokogiri,如果有帮助的话)对一些文档进行编码。我想改变实际的unicode字符(如“
)到html实体(如“
)。我该怎么做呢?我知道我可以写一个字符比如
s = '“'
puts "&##{.unpack('U').first};" # gives “
但是是否有一种方法可以正确地使用iconv或nokogiri?
有一个HTMLEntities gem。对于十进制编码,它与您的代码(unpack)大致相同。
这可能不合适,但nokogiri这样做(libxml2我认为实际上)当它不理解编码:
Nokogiri::HTML(html,nil,'klingon')
我想出了这个方法,它采用了一种蛮力的方法,当然(希望?)被编译库解决方案所取代?
def clean(text)
# Convert html chars to entities.
text = text.gsub(/[^u{20}-u{7E}]/){|char| "&##{char.unpack('U')[0]};"}
end