- Сообщений: 2
- Спасибо получено: 0
Помогите разобраться со скриптом конвертера валют
11 года 1 мес. назад - 11 года 1 мес. назад #79442
от TimkaVs
TimkaVs создал тему: Помогите разобраться со скриптом конвертера валют
Начал изучение самого языка руби, вот дошёл до практикума, нужно сделать конвертер четырёх валют с помощью case...end
Пишу и проверяю код на Aptana Studio 3.
Начал значит писать код.
puts "Конвертер валют приветствует вас.
Введите интересующую вас валюту. Доллар. Рубль. Евро Гривна"
vib=gets.chomp
case vib
when "Доллар" then
print "10 долларов"
else
print "херня"
end
с кейсом первый раз работаю, поэтому прежде чем писать от и до, я проверил что будет если переменная vib будет равняться "Доллар", по моей идеи должно показать сообщение 10 долларов. Если бы так и было, то вопроса не возникло. Но почему то запуская программу, я пишу Доллар, выдаёт else "херня". Если в when "Доллар" then, "доллар" изменить на "dol", и после запуска программы, ввести dol, то выдаёт нужную строку "10 долларов".
не могу понять в чем ошибка или проблема(
Пишу и проверяю код на Aptana Studio 3.
Начал значит писать код.
puts "Конвертер валют приветствует вас.
Введите интересующую вас валюту. Доллар. Рубль. Евро Гривна"
vib=gets.chomp
case vib
when "Доллар" then
print "10 долларов"
else
print "херня"
end
с кейсом первый раз работаю, поэтому прежде чем писать от и до, я проверил что будет если переменная vib будет равняться "Доллар", по моей идеи должно показать сообщение 10 долларов. Если бы так и было, то вопроса не возникло. Но почему то запуская программу, я пишу Доллар, выдаёт else "херня". Если в when "Доллар" then, "доллар" изменить на "dol", и после запуска программы, ввести dol, то выдаёт нужную строку "10 долларов".
не могу понять в чем ошибка или проблема(
Последнее редактирование: 11 года 1 мес. назад пользователем AnnTenna. Причина: пожалуйста, указывай названия точнее!
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад #79443
от Iren_Rin
Iren_Rin ответил в теме Помогите разобраться со скриптом конвертера валют
Подозреваю что ты сидишь под руской виндой, и видимо введенный текст будет закодирован в Windows-1251. Твоя же оптана, видимо, работает в utf-8 по умолчанию. Переведи полученную строку в utf-8 - должно помочь.
P.S. - в руби не обязательно писать then в case и if
Code:
vib = gets.chomp.encode('utf-8')
P.S. - в руби не обязательно писать then в case и if
Спасибо сказали: MaltonTheWarrior
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад - 11 года 1 мес. назад #79444
от TimkaVs
TimkaVs ответил в теме Помогите разобраться со скриптом конвертера валют
добавил что ты написал, всё равно не работает. Зашёл в настройки, стоит utf-8
Последнее редактирование: 11 года 1 мес. назад пользователем TimkaVs.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад #79445
от TimkaVs
TimkaVs ответил в теме Помогите разобраться со скриптом конвертера валют
Не знаю влияет ли на что нибудь, сижу с windows 10
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад #79446
от EvilCat
EvilCat ответил в теме Помогите разобраться со скриптом конвертера валют
Чтобы вовсе исключить из уравнения кодировку, можно написать:
...и попробовать ввести dollar. Если тогда всё сработает как надо - значит, какая-то морока с кодировкой.
Code:
when 'доллар', 'dollar', '$'
...и попробовать ввести dollar. Если тогда всё сработает как надо - значит, какая-то морока с кодировкой.
Спасибо сказали: DeadElf79
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад #79447
от DeadElf79
DeadElf79 ответил в теме Помогите разобраться со скриптом конвертера валют
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
11 года 1 мес. назад #79451
от Iren_Rin
Iren_Rin ответил в теме Помогите разобраться со скриптом конвертера валют
Если запускать руби файл из консоли (под виндой), то строка приходит в IBM866 (консоль винды - она такая, с приветом
), и перевод в UTF-8 решает проблему. Подумал, что возможно аптана коряво настроена из коробки, так что пришлось даже ее скачать и поставить и запустить файл уже из под нее. В итоге оказалось, что в Encoding.default_external у нее стоит Windows-1251, что вроде логично. Но на самом же деле, строка в gets приходит уже переведенная в юникод. Строки в руби - это последовательность байтов плюс кодировка. Последовательность байтов приходит как для строки в юникоде, но кодировка стоит неверная.
Есть два решения
Есть два решения
Code:
Encoding.default_encoding = 'utf-8'
#ИЛИ
s = gets.chop.forse_encoding 'utf-8'
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.106 секунд
