Как заставить Nokogiri добавить правильную кодировку XML?

Я создал xml-документ с помощью Nokogiri: Nokogiri::XML::Document

Заголовок моего файла <?xml version="1.0"?>, но я ожидаю, что у него будет <?xml version="1.0" encoding="UTF-8"?>. Есть ли какие-либо опции, которые я мог бы использовать, чтобы появилась кодировка?

Ответы

Ответ 1

Используете ли вы Nokogiri XML Builder? Вы можете передать параметр кодирования методу new():

new (options = {})

Создайте новый объект Builder. опции отправляются на документ верхнего уровня который строится.

Создание документа с определенной кодировкой, например:

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

Также эта страница говорит, что вы можете сделать следующее (если не используете Builder):

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

Предположительно вы можете изменить "EUC-JP" на "UTF-8".

Ответ 2

При анализе документа вы можете установить кодировку следующим образом:

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

Для меня это возвращает   <?xml version="1.0" encoding="UTF-8"?>