You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby与Nokogiri网页解析编码问题解决方案咨询

解决Ruby Nokogiri解析Goodreads名言的乱码问题

问题根源

你遇到的乱码是错误的编码转换操作导致的:Goodreads网页本身采用UTF-8编码,而你手动执行的encode('iso-8859-1').force_encoding('utf-8')或cp1252转码逻辑,反而把原本正确的UTF-8字符(比如省略号…)破坏成了乱码â¦。

修正后的代码

直接移除错误的编码转换步骤,利用Nokogiri的内置方法更可靠地提取文本:

require 'nokogiri'
require 'open-uri'
require 'action_view'

doc = Nokogiri::HTML(URI.open("https://www.goodreads.com/work/quotes/23218"))

tags = doc.css('div.quoteText')
# 直接提取标签内的纯文本,Nokogiri会自动处理编码
raw_text = tags[8].text.strip
# 清理多余空格、换行,并分离名言和作者信息(按需调整)
cleaned_quote = raw_text.gsub(/\s+/, ' ').split('―').first.strip
puts cleaned_quote

代码说明

  • 移除所有手动编码转换代码:Nokogiri会自动识别网页的UTF-8编码,无需额外转码操作。
  • 使用tags[8].text提取纯文本:比手动截取HTML字符串更稳定,避免标签解析错误。
  • 额外的strip和gsub用于清理冗余格式,split('―')是为了分离名言和作者部分,可根据实际需求调整。

运行结果

执行修正后的代码,会输出正确文本:

“…most of the damage we cause to the planet is the result of our own ignorance.”

内容的提问来源于stack exchange,提问作者sharataka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:10:13