TopClone
@TopClone
Новичек

Как исправить проблему с кодировками в Ruby?

Возникает проблема с кодировками, когда выводишь ключи из ассоциативного массива, который берет информацию из файла формата JSON, но при это русские символы работают при просто "puts".

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 "json"

data = File.read('eng.json')
data_hash = JSON.parse(data)
data_hash.each_key {|key| puts key }

puts "Русский"


Если что, вот сам JSON файл:
{
"Яблоко":"Apple",
"Красный":"Red",
"Молоко":"Milk",
"Вода":"Water",
"Восход":"Rise"
}


Это я получаю с консоли:
╨п╨▒╨╗╨╛╨║╨╛
╨Ъ╤А╨░╤Б╨╜╤Л╨╣
╨Ь╨╛╨╗╨╛╨║╨╛
╨Т╨╛╨┤╨░
╨Т╨╛╤Б╤Е╨╛╨┤
Русский


Помогите исправить пожалуйста, заранее спасибо.
  • Вопрос задан
  • 558 просмотров
Решения вопроса 1
TopClone
@TopClone Автор вопроса
Новичек
Проблема решена! Это была просто оплошность, надо было всего лишь дописать кодировку вот так:

data = File.read('eng.json', encoding: 'utf-8')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@chronic86
Ruby on Rails junior
Можете как вариант использовать запись в начале файла.
# encoding: utf-8
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы