Ruby,Nokogiri:我如何在整个nokogiri解析,erb模板和编码HTML文件中确保UTF8

lit*_*ter 6 html ruby parsing utf-8 nokogiri

我终于设法解析了网站的一部分:

get '/' do
  url = '<website>'
  data = Nokogiri::HTML(open(url))
  @rows = data.css("td[valign=top] table tr") 
  erb :muster
end
Run Code Online (Sandbox Code Playgroud)

现在我想在我的视图中提取某一行.因此我输入了我的HTML代码:

<%= @rows[2] %> 
Run Code Online (Sandbox Code Playgroud)

它实际上返回代码,但它有UTF8的问题:

<td class="class_name">&nbsp;</td>
Run Code Online (Sandbox Code Playgroud)

相反它说

<td class="class_name">?</td>
Run Code Online (Sandbox Code Playgroud)

如何在nokogiri解析,erb和HTML生成期间确保UTF8?

rai*_*inz 11

请参阅:http://www.nokogiri.org/tutorials/parsing_an_html_xml_document.html#encoding

看起来在您的情况下,文档声明它是使用iso8859编码的:

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
Run Code Online (Sandbox Code Playgroud)

您可以执行以下操作以强制Nokogiri将流视为UTF-8:

data = Nokogiri::HTML(open(url), nil, Encoding::UTF_8.to_s)
Run Code Online (Sandbox Code Playgroud)