2010-04-02 22 views
5

मैं नॉकोगिरी का उपयोग एचटीएमएल इकाइयों (जैसे जर्मन उमोट्स) के साथ कैसे कर सकता हूं?कैसे नोकोगिरी पारदर्शी रूप से अन/एन्कोडेड एचटीएमएल इकाइयों को वापस नहीं लाता है?

यानी .:

# 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 सिर्फ पारदर्शी रूप से ऊपर की तरह व्यवहार करने के लिए एक तरह से साथ आ सकता है।

कोई बात नहीं?

उत्तर

11

ठीक है, मेरे सवाल का 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

ट्वीट पाठ: आप इस के लिए 1.4.2 के लिए इंतजार करना पड़ सकता है, लेकिन यह संभव है। http://bit.ly/cRygHP –