How do I get Nokogiri to add the right XML encoding? How do I get Nokogiri to add the right XML encoding? xml xml

How do I get Nokogiri to add the right XML encoding?


Are you using Nokogiri XML Builder? You can pass an encoding option to the new() method:

new(options = {})

Create a new Builder object. options are sent to the top level Document that is being built.

Building a document with a particular encoding for example:

  Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|    ...  end

Also this page says you can do the following (when not using Builder):

doc = Nokogiri.XML('<foo><bar /><foo>', nil, 'EUC-JP')

Presumably you could change 'EUC-JP' to 'UTF-8'.


When parsing the doc you can set the encoding like this:

doc = Nokogiri::XML::Document.parse(xml_input, nil, "UTF-8")

For me that returns <?xml version="1.0" encoding="UTF-8"?>


If you're not using Nokogiri::XML::Builder but rather creating a document object directly, you can just set the encoding with Document#encoding=:

doc = Nokogiri::XML::Document.new# => #<Nokogiri::XML::Document:0x1180 name="document">puts doc.to_s# <?xml version="1.0"?>doc.encoding = 'UTF-8'puts doc.to_s# <?xml version="1.0" encoding="UTF-8"?>