如何使用Nokogiri-scraped HTML并将其作为UTF-8输出到终端?

Nic*_*las 3 html ruby encoding utf-8 nokogiri

我对编程非常陌生,我正在Ruby 1.9.3中编写一个小练习程序,使用Nokogiri用邮政编码查询加拿大议会网站,然后打印相应的国会议员的名字和他们的骑马.终奌站.

我的代码获取页面并隔离MP的名称/骑行很好,但在shell中将UTF-8字符显示为纯ASCII.我想要显示UTF-8字符.

我知道shell可以处理UTF-8,因为:

irb> riding = "St-Jérôme"
=> "St-Jérôme"
irb> puts riding
St-Jérôme
=> nil
Run Code Online (Sandbox Code Playgroud)

我用来获取页面的代码:

page = Nokogiri::HTML(open("http://parl.gc.ca/ParlInfo/Compilations/HouseOfCommons/MemberByPostalCode.aspx?PostalCode=#{postalcode}"))
Run Code Online (Sandbox Code Playgroud)

这是我输入时此代码返回的示例puts page:

<span id="ctl00_cphContent_repMP_ctl00_grdConstituencyAddress_ctl02_Label12">St-J&Atilde;&copy;r&Atilde;&acute;me</span>
Run Code Online (Sandbox Code Playgroud)

所以" St-Jérôme" St-J&Atilde;&copy;r&Atilde;&acute;me在页面输出中变成" ",或者St-J&Atilde;&copy;r&Atilde;&acute;me在终端中变成" " .

也许有一种方法来转换它,因为它存储为字符串变量?或者也许我可以在Nokogiri中设置一个选项,将其作为UTF-8而不是ASCII来降低?

我搜索了很长时间才在Google和Stack Overflow上找到答案,并且没有发现任何相关或我理解的内容; 再说一次,我对此非常陌生.如果这是重复,请指出我正确的方向.

非常感谢.

Bad*_*est 7

尝试

page = Nokogiri::HTML(open("http://parl.gc.ca/ParlInfo/Compilations/HouseOfCommons/MemberByPostalCode.aspx?PostalCode=#{postalcode}"), nil, "UTF-8")
Run Code Online (Sandbox Code Playgroud)

代替.这应该将页面解析为UTF-8并解决问题.