gpt4 book ai didi

ruby - 与 ruby​​ 和 Nokogiri HTML 不兼容的编码

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:13 27 4
gpt4 key购买 nike

我正在使用 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

在最后一行中,字符串应该使用破折号 在浏览器上呈现。如果我将我的页面指定为 ISO-8859-1 编码,浏览器会正确呈现它,但是,我的 Sinatra 应用程序使用 UTF-8。如何在浏览器中正确显示该文本?今天显示为一个正方形,里面有一个小数字。我尝试了 force_encoding('ISO-8859-1'),但随后我从 Sinatra 收到了 CompatibilityError。

有什么线索吗?

[编辑]以下是该应用程序的屏幕截图:

-> 字符编码为 UTF-8 的 Firefox Firefox with character encoding UTF-8

-> [使用西方字符编码的 Firefox (ISO-8859-1) Firefox with character encoding Western (ISO-8859-1)

值得一提的是,在上面的 ISO-8859-1 模式下,破折号显示正确,但在破折号之前还有另一个不正确的字符。奇怪:(

最佳答案

在 Nokogiri 中解析文档后,您可以告诉它假设一个不同的 encoding .尝试:

require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML((open("http://flybynight.com.br/agenda.php"), nil, 'ISO-8859-1')
doc.encoding = 'UTF-8'

我从这里看不到该页面,以确认这可以解决问题,但它对类似的问题有效。

关于ruby - 与 ruby​​ 和 Nokogiri HTML 不兼容的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com