Skip to content

Latest commit

 

History

History
41 lines (31 loc) · 1.36 KB

windows-problema-s-kodirovkoy-russkimi-bukvami.md

File metadata and controls

41 lines (31 loc) · 1.36 KB

Windows: Проблема с кодировкой/русскими буквами

При написании программы на ruby, которая берет ввод пользователя из консоли, иногда возникают проблемы. Даже если файл сохранен в кодировке UTF-8, русские символы программа не выводит.

puts "Привет! Как тебя зовут?"

name = gets.encode("UTF-8").chomp

puts "Привет, " + name + ", как дела?"

Результат в консоли

D:\RUBYTUT\lesson5>ruby gets.rb
Привет! Как тебя зовут?
Карина
Привет, ��ਭ�, как дела?

Можно ли это как-то исправить?

Ультимативное решение -- вставить в начале файла код:

# XXX/ Этот код необходим только при использовании русских букв на Windows
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
# /XXX

После этого использовать encode уже не нужно:

name = gets.chomp