您的编码不匹配,但您没有告诉我们足够的信息来帮助您。
检查事项:
- 服务器说他们的页面是什么编码?它将在返回的 HTTPD 标头中。
- 文档真的 是否按照服务器所说的进行编码,或者是否存在不在该代码集中的字符?
通常,您将获得 UTF-8、ISO-8859-1 或 Win-1252 格式的文档,因此请尝试使用这些值来给 Nokogiri 一个提示。 Nokogiri::HTML.parse 的文档说:
parse(thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block)
地点:
encoding 是处理文档时应该使用的编码。
找出服务器发回的内容的一种方法是:
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