Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby,Nokogiri:如何确保在Nokogiri解析、erb模板和编码HTML文件的整个过程中使用UTF8_Html_Ruby_Parsing_Utf 8_Nokogiri - Fatal编程技术网

Ruby,Nokogiri:如何确保在Nokogiri解析、erb模板和编码HTML文件的整个过程中使用UTF8

Ruby,Nokogiri:如何确保在Nokogiri解析、erb模板和编码HTML文件的整个过程中使用UTF8,html,ruby,parsing,utf-8,nokogiri,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 get'/'do url=“” data=Nokogiri::HTML(打开(url)) @rows=data.css(“td[valign=top]table tr”) 雇员再培训局:

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

get '/' do
  url = '<website>'
  data = Nokogiri::HTML(open(url))
  @rows = data.css("td[valign=top] table tr") 
  erb :muster
end
get'/'do
url=“”
data=Nokogiri::HTML(打开(url))
@rows=data.css(“td[valign=top]table tr”)
雇员再培训局:集合
结束
现在我正试图从我的观点中提取一条线。因此,我在HTML代码中加入:

<%= @rows[2] %> 

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

<td class="class_name">&nbsp;</td>

而是说

<td class="class_name">�</td>
如何在nokogiri解析、erb和HTML生成期间确保UTF8

见:

在您的案例中,文档声明它使用iso8859编码:

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">

也许你正在访问的网站不是UTF-8,URL是什么?更新了我的答案,展示了如何强制nokogiri使用UTF-8如果你在做一个片段,你可以只做
nokogiri::HTML::DocumentFragment.parse(HTML,Encoding::UTF_8.to_s)
这似乎还不够,似乎nokogiri没有按预期处理它。我使用以下内容来提供我需要的保护“doc=Nokogiri::HTML(email.try(:force_编码,'ISO-8859-1')。try(:encode,'UTF-8')。to_)”.doc.text可以任意工作,但doc.text.match(/string/)不能,除非添加额外的force_编码。
data = Nokogiri::HTML(open(url), nil, Encoding::UTF_8.to_s)