Итак, я до сих пор совершенно не понимаю, почему не могу найти «правильный» способ сделать это, но этот поток помог найти метод force_encoding
в классе String. , Так как мой код в любом случае включает в себя копирование атрибутов в хеш, то нет ничего страшного в том, чтобы вызвать force_encoding
, когда я копирую значение.
Я вдвойне убедился, что сохранил файл как UTF-8, и поместил правильную декларацию xml вверху. Это все еще не удалось.
В любом случае, до тех пор, пока я не смогу понять, как исправить реальную проблему, этот код исправил ее.
object = { type: node.name }
node.attributes.each do |attribute|
name = attribute.name.gsub /_/,""
value = attribute.value.force_encoding('UTF-8')
object[name] = value
end
Обратите внимание, что это было бы неуместно, если бы мне уже не нужно было копировать узел в хеш, поскольку это определенно не стоило бы всех хлопот. Если я тогда сделаю
object.to_json
Работает без проблем. Спасибо за вашу помощь, топор! У вас есть идеи, как я могу форсировать кодировку в XML?