Fel*_*ima 4 ruby encoding nokogiri
我正在使用Nokogiri解析外部HTML页面.该页面使用ISO-8859-1进行编码.我要提取的部分数据包含一些 - (破折号)html实体:
xml = Nokogiri.HTML(open("http://flybynight.com.br/agenda.php"), nil, 'ISO-8859-1')
f = xml.xpath("//div[@style='background-color:#D9DBD9; padding:15px 12px 10px 10px;']//div[@class='tit_inter_cnz']/text()")
f[0].text #=> Preview M/E/C/A \u0096 John Digweed
Run Code Online (Sandbox Code Playgroud)
在最后一行中,String应该使用短划线在浏览器上呈现.如果我将页面指定为ISO-8859-1编码,浏览器会正确呈现它,但是,我的Sinatra应用程序使用UTF-8.如何在浏览器中正确显示该文本?今天是显示为内部数量较少的正方形.我尝试了force_encoding('ISO-8859-1'),但后来我从Sinatra得到了一个CompatibilityError.
有线索吗?
[编辑]以下是该应用的截图:
- > Firefox,字符编码为UTF-8

- > [带有字符编码的Firefox(ISO-8859-1)

值得一提的是,在上面的ISO-8859-1模式中,破折号显示正确,但在破折号之前还有另一个不正确的字符.奇怪的 :(
在Nokogiri中解析文档后,您可以告诉它采用不同的编码.尝试:
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML((open("http://flybynight.com.br/agenda.php"), nil, 'ISO-8859-1')
doc.encoding = 'UTF-8'
Run Code Online (Sandbox Code Playgroud)
我无法从这里看到该页面,以确认这可以解决问题,但它适用于类似的问题.