Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Кириллица в Ruby (консоль)


Автор: Ybr 4.3.2010, 19:22
==================================================
Ответ на вопрос:
[окошко "Projects"]->ПКМ на названии вашего проекта->Properties->Sources [в открывшемся окне, слева]->Encoding [выпадающее меню в самом низу]->[выбрать интересующую кодировку. Я выбрал Windows-1251].
Если чего непонятно, идите в справку [Help->Help Contents->Search], поиск по слову "encoding". Вас интересует ссылка с названием, типа "About Project Encodings", раздел "To change the character encoding for a project:".
==================================================
Здравствуйте!
Начал изучать Ruby. Уже имею некоторый опыт программирования на C++ и Delphi.
После того, как прочитал обзор основных возможностей Ruby, решил начать писать свои программы, не бросая при этом чтение книги, разумеется.
Прежде всего, очень долго выбирал IDE. В итоге остановился на NetBeans IDE 6.8 (один из немногих, как я понял, который поддерживает чистый Ruby, а не RoR).

Ну, ближе к делу. Скопипастил из книгиНаписал программу, переводящую градусы Цельсия в Фаренгейты, и наоборот. Все работает, но вместо русского языка в консоли выводятся букозябы.
Код

print "Пожалуйста, введите температуру и шкалу (C или F): "
str = gets
exit if str.nil? or str.empty?
str.chomp!
temp, scale = str.split(" ")

abort "#{temp} - это недопустимое число." if temp !~ /-?\d+/

temp = temp.to_f
case scale
  when "C", "c"
     f = 1.8*temp + 32
  when "F", "f"
     c = (5.0/9.0)*(temp-32)
else
  abort "Вы должны были ввести C или F."
end

if f.nil?
  print "#{c} градусов C\n"
else
  print "#{f} градусов F\n"
end

Вывод:
Код

Пожалуйста, введите температуру Рё шкалу (C или F): 23 F
-5.0 градусов C


Погуглил, в итоге нашел два способа решения:
Первый
Цитата

Код

$KCODE = 'u'
require 'jcode'

включает "юникод-режим" для ряда методов (они начинают работать с символами): chop!, chop, delete!, delete, squeeze!, squeeze, succ!, succ, tr!, tr, tr_s!, и tr_s.

Источник: http://ru.wikibooks.org/wiki/RubyHammer/FAQ

Добавил эти 2 строчки наверх программы, но ничего ровным счетом не изменилось. Все равно в выводе получаю букозябы.
Второй
Цитата

Написать в начале программы следующие строки:
Код

$KCODE = 'u'
require 'gtk2'


Источник: http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_i18n

В результате получилась ошибка:
Цитата

C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- gtk2 (LoadError)

Погуглил. Разобрался, что gtk2 - это какая-то библиотека для отрисовки графики. Вопрос в том, где ее скачать. И как использовать.

Автор: Ybr 4.3.2010, 21:32
Уже неактуально.

Автор: source777 4.3.2010, 22:25
Очередная проблема для Windows-юзеров, впрочем кодировки это ещё цветочки. smile 
Поставьте себе GNU/Linux или MacOS X и ваше кол-во проблем с Ruby в целом и c RoR в частности сократится в пару десятков раз...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)