我有这样的代码:编码问题时使用替换引入nokogiri
# encoding: utf-8
require 'nokogiri'
s = "<a href='/path/to/file'>Café Verona</a>".encode('UTF-8')
puts "Original string: #{s}"
@doc = Nokogiri::HTML::DocumentFragment.parse(s)
links = @doc.css('a')
only_text = 'Café Verona'.encode('UTF-8')
puts "Replacement text: #{only_text}"
links.first.replace(only_text)
puts @doc.to_html
但是,输出是这样的:
Original string: <a href='/path/to/file'>Café Verona</a>
Replacement text: Café Verona
Café Verona
为什么文中@doc
结束了错误的编码?
我试过有和没有encode('UTF-8')
或使用Document
而不是DocumentFragment
,但它是同样的问题。
我在使用Nokogiri v1.5.6和Ruby 1.9.3p194。
我无法使用Ruby 2.0.0或1.9.3来重现它。顺便说一句,你的Ruby版本是什么? – 2013-02-28 21:25:52
你试过了'puts @ doc.to_html(:encoding =>“UTF-8”)' – PinnyM 2013-02-28 21:26:58
@jonallard它是ruby 1.9.3p194(2012-04-20修订版35410)[x86_64-darwin11.4.0] – Cristian 2013-02-28 21:38:47