каждая текущая (последняя) запись в xml файл отображается корректно. А вот все предыдущие - становятся нечитаемыми. Все файлы сохраняю при создании в UTF-8, нужные процедуры в начале программы прописал. Ваше решение этой задачи скачал, запустил, всё работает корректно. У себя не смог найти где ошибся...
if (Gem.win_platform?)
Encoding.default_external = Encoding.find(Encoding.locale_charmap)
Encoding.default_internal = __ENCODING__
[STDIN, STDOUT].each do |io|
io.set_encoding(Encoding.default_external, Encoding.default_internal)
end
end
require "date"
require "rexml/document"
puts "в этом сундуке хранятся желания."
puts "Чего бы Вы хотели?"
wish_text = STDIN.gets.chomp
puts "До какого числа хотите осуществить это желание? \n Введите в формате ДД.ММ.ГГГГ"
wish_date = STDIN.gets.chomp
wish_date = Date.parse(wish_date)
current_path = File.dirname(__FILE__)
file_name = current_path + "/wishes.xml"
file = File.new(file_name)
doc = REXML::Document.new(file)
file.close
wishes = doc.elements.find("wishes").first
wish = doc.root.add_element('wish', {
'date' => wish_date.to_s
})
wish.text = wish_text
file = File.new(file_name, "w:UTF-8")
doc.write(file, 2)
file.close
puts "Запись сохранена"
ниже записи в xml:
<?xml version='1.0' encoding='UTF-8'?>
<wishes>
<wish date='2018-12-31'>
тХитХЬтХитХб тХитХСтХитХЫтХд╨СтХд╨ЯтХд╨ЧтХитХХтХд╨ТтХд╨Ь
</wish>
<wish date='2001-01-01'>
╨╜╨░╨╣╤В╨╕ ╨▓╨╕╨╜╨░╨▓╨░╤В╤Л╤Е
</wish>
<wish date='2018-11-26'>
разобраться с кодировкой
</wish>
</wishes>