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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка в perl 
:(
    Опции темы
subudai
Дата 18.8.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всем добрый вечер
возникла вот такая проблема у меня, при переводе формата pl в exe через программу perl2exe, нехочет отображаться русская кодировка.
вот программный код,
Код

#!/usr/bin/perl
$|=1;
END { read(STDIN, my $buf,1); }
use encoding 'cp1251', STDOUT => 'cp866';
print "это калькулятор, написаный на языке perl\n";
print <<FIRST;
принцип работы калькулятора следущий:
1. вы водите число (если не введено число, то автоматом подставляет 0)
2. вы водите с клавиатуры знак("-","+","x" и т.д.)
3. вы вводите второе число";
и получаем ответ";
         * длля нахождение корня числа водите sqrt
FIRST
print "\nведите любое число\n";
$a = <STDIN>;
chomp $a;
if ($a =~ /[0-9]\b/i) {

}
else { 
print "неверно ввод данных\n";
$a = <STDIN>;
chomp $a;
while ($a =~ /[^0-9]\b/i){
print "введите число(*в данный момент вы водите буквы)\n";
$a = <STDIN>;
chomp $a;
} print "теперь вы можете вводить знак\n";
}
$name = <STDIN>;
chomp ($name);
if ($name =~ s/\+/здгы/egimosx) {
# операция сложения
print "введите второе число\n"; 
$b = <STDIN>;
good_chis();
$s = ($a+$b);
print "Ответ: $s";
}


else { print "произошла ошибка. попробуйте заново"; }


sub good_chis {
if ($b =~ /[0-9]\b/i) {

}
else { 
print "неверно ввод данных\n";
$b = <STDIN>;
chomp $b;
while ($b =~ /[^0-9]\b/i){
print "введите число(*в данный момент вы водите буквы)\n";
$b = <STDIN>;
chomp $b;
} 
}
}


использовал в качестве кодировки вот такой код:
Код

use encoding 'cp1251', STDOUT => 'cp866';
, но при компиляции выдаёт ошибку.
если удалить этот код, то работает всё хорошо, но не отображается правильно кирилица.
незнаю что делать, очень нужны ваша помощь

PM MAIL   Вверх
Jimy
Дата 18.8.2010, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Сохраните исходник в нужной кодировке и не придется ничего перекодировать при выводе в STDOUT
PM   Вверх
subudai
Дата 18.8.2010, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Jimy
а как сохранить исходник в нужной кодировке?
я просто сохраняю с форматом pl, а как по другому?
как сохранить в нужной кодировке
PM MAIL   Вверх
vadiml
Дата 19.8.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



subudai, 
pl -- это не формат, а расширение, формат -- plain text

А перекодировать можно любым нормальным редактором или, например, использовать iconv
PM MAIL Jabber   Вверх
Jimy
Дата 19.8.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(subudai @  18.8.2010,  23:33 Найти цитируемый пост)
а как сохранить исходник в нужной кодировке?


Судя по тому, что Вы используете

use encoding 'cp1251', STDOUT => 'cp866';

сам текст программы Вы набрали в кодировке cp1251.
и соответственно print'ы выводят текст (который зашит в исходнике) именно в этой кодировке.
Просто пересохраните файл в кодировке cp866.
Как это сделать - ответили выше а также поисковики выдадут много вариантов по этому вопросу.

PM   Вверх
subudai
Дата 19.8.2010, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну вот попробовал через Notepad поменить кодировку на UTF-8, тоже самое происходит, конвертирует, но не запускается формат exe.
вот сама ошибка которая выдаётмя при конвертации
Код

Converting 'kallkulator.pl' to kallkulator.exe
Warning: Can't locate I18N/Langinfo.pm
at C:\usr\lib\encoding.pm line 44
@ING = C:\usr\lib, C:\usr\site\lib, .

PM MAIL   Вверх
Jimy
Дата 19.8.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(subudai @  19.8.2010,  15:58 Найти цитируемый пост)
попробовал через Notepad поменить кодировку на UTF-8


Ну даже и не знаю. Может стоит попробовать поменять на китайскую традиционную?

smile
PM   Вверх
shamber
Дата 20.8.2010, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Jimy @  19.8.2010,  16:56 Найти цитируемый пост)
китайскую традиционную?

[irony] поможет? [/irony]
PM MAIL Jabber   Вверх
subudai
Дата 20.8.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мда...  зачем уже флудить в теме?
я задал вопрос, чтоб получить ответ, а не вашу критику, в частности от Jimy и флуд от shamber
PM MAIL   Вверх
shamber
Дата 20.8.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



subudai, многоуважаемый...... читайте пожалуйста не только между строк....

Цитата(Jimy @  19.8.2010,  13:04 Найти цитируемый пост)
Просто пересохраните файл в кодировке cp866.

Цитата(subudai @  19.8.2010,  15:58 Найти цитируемый пост)
ну вот попробовал через Notepad поменить кодировку на UTF-8

ну и кто после этого флудит?

Добавлено @ 13:05
Вы мало того что не воспользовались поиском, эта тема обсуждалась уже не раз, так вы в каждой теме проявляете чудеса чтения.

Это сообщение отредактировал(а) shamber - 20.8.2010, 13:05
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.0657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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