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'.
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"?>