2010-04-02 8 views
5

¿Cómo puedo usar Nokogiri teniendo intactas las entidades html (como las umlauts alemanas)?¿Cómo hacer que Nokogiri devuelva intactas las entidades html sin codificar?

es decir .:

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

He intentado meterse con ambos parse_options y opciones: save_with, pero no pudo llegar a una manera de tener Nokogiri simplemente se comporta de forma transparente como el anterior.

¿Alguna sugerencia?

Respuesta

11

Ok, mi pregunta ha sido respondida por Aaron través 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>') 
+0

Tweet texto: Es posible que tenga que esperar a 1.4.2 para esto, pero es posible. http://bit.ly/cRygHP –

Cuestiones relacionadas