使用Ruby/Nokogiri进行屏幕抓取后返回的奇怪字符?

使用Ruby/Nokogiri进行屏幕抓取后返回的奇怪字符?,ruby,screen-scraping,nokogiri,Ruby,Screen Scraping,Nokogiri,我使用Ruby和Nokogiri从客户的遗留系统中刮取数据 我得到的文本包含一个商标符号。但是,当我在控制台上显示它或将它保存到数据库时,TM会转换为不同的字符 饮食™变成了饮食 我敢肯定这只是一个编码问题,我敢肯定Ruby有一个简单的方法来解决它,但在谷歌搜索了几分钟并尝试了几个明显的选项后,我没有再接近了 提前谢谢 您的编码不匹配,但您没有告诉我们足够的信息来帮助您 检查事项: 服务器说他们的页面是什么编码?它将在返回的HTTPD头中 文档是否真的像服务器所说的那样编码,或者是否有不在该代

我使用Ruby和Nokogiri从客户的遗留系统中刮取数据

我得到的文本包含一个商标符号。但是,当我在控制台上显示它或将它保存到数据库时,TM会转换为不同的字符

饮食™变成了饮食

我敢肯定这只是一个编码问题,我敢肯定Ruby有一个简单的方法来解决它,但在谷歌搜索了几分钟并尝试了几个明显的选项后,我没有再接近了


提前谢谢

您的编码不匹配,但您没有告诉我们足够的信息来帮助您

检查事项:

  • 服务器说他们的页面是什么编码?它将在返回的HTTPD头中
  • 文档是否真的像服务器所说的那样编码,或者是否有不在该代码集中的字符
通常,您将获得UTF-8、ISO-8859-1或Win-1252等文档,因此请尝试使用这些值给Nokogiri一个提示。Nokogiri::HTML.parse的文档说明:

parse(thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block)
其中:

编码是处理文档时应使用的编码

确定服务器正在发送回什么的一种方法是:

require 'open-uri'
open('http://www.example.net') { |io| io.charset }
# => "iso-8859-1"
警告:服务器发回的内容不一定是真正的内容,因此它只是一个初步提示。返回的文档可能是任何内容,在这一点上,您需要自己找出它是什么

通常我们使用
Nokogiri::HTML('some HTML to parse')
,但您可以使用:

Nokogiri::HTML('some html to parse', nil, 'UTF-8') 
查看Ruby的编码,找出可用的代码集:

Encoding.constants

最初刮取的数据的编码是什么?另外,请向我们展示您的尝试。”