Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как включить(подвязать) отображение русских букв? русские буквы в командной строке Win 
:(
    Опции темы
Redee
  Дата 26.12.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.12.2010

Репутация: нет
Всего: нет



Как включить(подвязать) отображение русских букв в Perl в командной строке виндовс?
При запуске программы Perl, установлен ActivePerl (команд. строка виндовс -- пуск - выполнить - cmd) место русских символов выдает иероглифы, вот исходник >>>

Код

#!/usr/bin/perl -w

print "Величина месячного взноса?";
$pmt=<STDIN>;
chomp $pmt;

print "Годовая процентная ставка? (пример 7% - 0.07)";
$interest=<STDIN>;
chomp $interest;

print "Период депозита в месяцах?";
$mons=<STDIN>;
chomp $mons;

# В формуле заложена месячная процентная ставка
$interest/=12;

$total=$pmt*((1+$interest)**($mons-1))/$interest;

print "После $mons месяцев при ежемесячной ставке $interest\n";
print "у вас будет сумма $total.\n";

Вот наглядно что выходит>>>
user posted image

З.Ы. Я полный профан, только начал изучать, объясните пожалуйста поподробнее.

Это сообщение отредактировал(а) Redee - 26.12.2010, 23:16
PM MAIL   Вверх
shamber
Дата 27.12.2010, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



попробуйте поискать по форуму
например тут
PM MAIL Jabber   Вверх
steyraug
Дата 27.12.2010, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 22.8.2010

Репутация: нет
Всего: нет



use encoding "ru_RU.CP1251";

или

system('chcp 1251')
PM MAIL   Вверх
Redee
  Дата 27.12.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.12.2010

Репутация: нет
Всего: нет



Огромное спасибо shamber и nitr  smile smile
Код преобразовался вот в что >>>
Код
#!/usr/bin/perl -w
use Encode qw(encode decode);
$content = "Величина месячного взноса?";
$content = Encode::encode('cp866', Encode::decode('cp1251', $content));
print $content;
$pmt=<STDIN>;
chomp $pmt;

$content = "Годовая процентная ставка? (пример 7% - 0.07)";
$content = Encode::encode('cp866', Encode::decode('cp1251', $content));
print $content;
$interest=<STDIN>;
chomp $interest;

$content = "Период депозита в месяцах?";
$content = Encode::encode('cp866', Encode::decode('cp1251', $content));
print $content;
$mons=<STDIN>;
chomp $mons;

# В формуле заложена месячная процентная ставка
$interest/=12;

$total=$pmt*((1+$interest)**($mons-1))/$interest;

$content = "После";
$content = Encode::encode('cp866', Encode::decode('cp1251', $content));
$content2 = "месяцев при ежемесячной ставке";
$content2 = Encode::encode('cp866', Encode::decode('cp1251', $content2));
print "$content $mons $content2 $interest\n";

$content = "У вас будет сумма";
$content = Encode::encode('cp866', Encode::decode('cp1251', $content));
print "$content $total.\n";

Но остались вопросы...
Если я не знаю кодировку командной строки виндовс или другого средства вывода(проверки) программы, как мне ее узнать ведь в этом действенном методе обязательно надо знать в каком формате предыдущая и на какую кодировать ('cp866' и 'cp1251').
Код

$content = Encode::encode('cp866', Encode::decode('cp1251', $content));

И еще сам код программы разростается до невообразимых размеров если это длинная прога, есть ли метод задания этих двух кодировок ???
То есть чтобы одновременно работало и 'cp866' и 'cp1251'. Или как то так чтобы где вывод текста русс. буквами автоматически отслеживались и обрабатывалось в 'cp1251'.

Это сообщение отредактировал(а) Redee - 27.12.2010, 19:31
PM MAIL   Вверх
shamber
Дата 2.1.2011, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(Redee @  27.12.2010,  19:28 Найти цитируемый пост)
И еще сам код программы разростается до невообразимых размеров если это длинная прога, есть ли метод задания этих двух кодировок ???

вынесите код в попрограмму
например так:
Код

#!/usr/bin/perl -w
use Encode qw(encode decode);

print_enc("Величина месячного взноса?");

sub print_enc{
    my $text = shift; #получили текст
    my $from = shift||"cp1251"; #если нужно указали другую кодировку или по умолчанию
    my $to = shift||"cp866"; #если нужно указали другую кодировку или по умолчанию
    $text = Encode::encode($to, Encode::decode($from, $text));
    print $text;
}


Добавлено через 1 минуту и 17 секунд
Цитата(Redee @  27.12.2010,  19:28 Найти цитируемый пост)
Или как то так чтобы где вывод текста русс. буквами автоматически отслеживались и обрабатывалось в 'cp1251'.

чего-то я не пойму как вы собираетесь отслеживать это.
PM MAIL Jabber   Вверх
Redee
Дата 5.1.2011, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.12.2010

Репутация: нет
Всего: нет



shamber благодарствую, с наступающим Рождеством, очень упростили мне жизнь  smile  smile 
Теперь с помощью print_enc код программы заметно легче ))) >>>
Код

#!/usr/bin/perl -w
use Encode qw(encode decode);

sub print_enc {
    my $text = shift; # получили текст
    my $from = shift||"cp1251"; # если нужно указали другую кодировку или по умолчанию
    my $to = shift||"cp866"; # если нужно указали другую кодировку или по умолчанию
    $text = Encode::encode($to, Encode::decode($from, $text));
    print $text;
}

print_enc "Величина месячного взноса?";
$pmt=<STDIN>;
chomp $pmt;

print_enc "Годовая процентная ставка? (пример 7% - 0.07)";
$interest=<STDIN>;
chomp $interest;

print_enc "Период депозита в месяцах?";
$mons=<STDIN>;
chomp $mons;

# В формуле заложена месячная процентная ставка
$interest/=12;

$total=$pmt*((1+$interest)**($mons-1))/$interest;

print_enc "После $mons месяцев при ежемесячной ставке $interest
у вас будет сумма $total.\n";


Это сообщение отредактировал(а) Redee - 5.1.2011, 00:36
PM MAIL   Вверх
shamber
Дата 5.1.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Redee, и Вас с Рождеством.

вы лучше скобочки добавьте, так будет более читаемо, имхо.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.