Как заставить Nokogiri прозрачно возвратить нетронутые объекты HTML ООН/кодировать?

Как я могу использовать Nokogiri с наличием объектов HTML (как немецкие умляуты) нетронутый?

Т.е.:

# this is fine
node = Nokogiri::HTML.fragment('<p>&ouml;</p>')
node.to_s # => '<p>&ouml;</p>'

# this is not
node = Nokogiri::HTML.fragment('<p>ö</p>')
node.to_s # => '<p>&ouml;</p>'

# this is what I need
node = Nokogiri::HTML.fragment('<p>ö</p>')
node.to_s # => '<p>ö</p>'

Я попытался смешать и с PARSE_OPTIONS и с: опции save_with, но не могли придумать способ иметь Nokogiri, просто прозрачно ведут себя как вышеупомянутый.

Какие-либо указатели?

6
задан svenfuchs 2 April 2010 в 14:07
поделиться

1 ответ

Хорошо, на мой вопрос ответил Аарон через twitter / gist :

require 'rubygems'
require 'nokogiri'

doc = Nokogiri::HTML::Document.new
doc.encoding = 'UTF-8'

# We added a contextual fragment method for the 1.4.2 release. This *might*
# work in 1.4.1. If you want to mess with 1.4.2, build from my github, or
# grab one of our nightly builds:
#
# $ sudo gem install nokogiri -s http://tenderlovemaking.com/
#
# Also, libxml2 had a bug with encoding when handling UTF-8 fragments, so I
# suggest you also upgrade to libxml2 2.7.7.
#
# Hope that helps!
puts doc.fragment('<p>ö</p>')
11
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: