使用 Nokogiri 替换时的编码问题

2024-04-18

我有这个代码:

# 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。


似乎如果您传递 nokogiri 文本对象,它就会执行此操作;)

links.first.replace Nokogiri::XML::Text.new(only_text, @doc)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Nokogiri 替换时的编码问题 的相关文章

随机推荐