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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Русские буквы 
:(
    Опции темы
TwiSteR
Дата 16.6.2005, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

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



Доброго времени суток всем,
Имеется нужда добиться русских букв в stdout
Отсюда How to ???
--------------------
PM MAIL WWW ICQ   Вверх
chaos
Дата 16.6.2005, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


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

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



на сколько я понимаю тебе надо перед вывдодм текста в стдоут конвертнуть из одной кодировки в другую

почитай про транслитерацию tr

Это сообщение отредактировал(а) chaos - 16.6.2005, 07:06
PM WWW   Вверх
Ivan Kolesnikov
Дата 16.6.2005, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 9.3.2005
Где: г. Новокузнецк

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



Скорее всего программируешь под Windows, все дело в том, что в консоле кодировка oem866, а ты пишешь наверное под Win1251. Выхода 2: или пиши под oem866 или если нужно получить просто понятное русское сообщение в консоле перенаправляй весь вывод в файл:
Код

perl script.pl > temp.txt

А проще всего на мой взгляд выучить английский smile
--------------------
PM MAIL ICQ   Вверх
TwiSteR
Дата 16.6.2005, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

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



Цитата(Ivan @ 16.6.2005, 07:05)
Скорее всего программируешь под Windows

Да

Цитата(Ivan @ 16.6.2005, 07:05)
А проще всего на мой взгляд выучить английский

Я то его знаю прекрасно (довелось пожить за рубежом), а вот что делать с юзерами ?! smile
--------------------
PM MAIL WWW ICQ   Вверх
nerezus
Дата 16.6.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



> а вот что делать с юзерами ?!
perldoc Tk - самое сложное решение, юзвери-то еще и не консольные ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
TwiSteR
Дата 16.6.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

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



Цитата(nerezus @ 16.6.2005, 13:17)
юзвери-то еще и не консольные ;)

Юзверю надо вывести сообщение в консоли после отработки программы, мол так и так выполнено успешно или нет
Добавлено @ 13:53
Цитата(nerezus @ 16.6.2005, 13:17)
perldoc Tk

Сенкс буду изучать
--------------------
PM MAIL WWW ICQ   Вверх
nerezus
Дата 16.6.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



>Юзверю надо вывести сообщение в консоли после отработки программы, мол так и так выполнено успешно или нет
опс, я вроде прогнал... =( в Tk они тоже кракозябликами... =(


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
korob2001
Дата 16.6.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Вобщем, что бы больше не возникало такого вопроса написал такой маленьки модуль, который перегоняет строки в DOS кодировку и обратно. Документировать его я не стал, потому как пользоваться им достаточно легко. Внизу сообщения прикреплён файл, качаешь его, распаковываешь, затем распакованный файл Decoder.pm кидай в библиотечный каталог:

Если ты не знаешь какой каталог является библиотечным, то введи в командной строке такую команду:

C:\>perl -V

После чего в самом низу увидишь примерно такие строки:
Цитата

@INC:
     C:/Perl/usr/lib
     C:/Perl/usr/site/lib

Вот это и есть библиотечные каталоги. Теперь кидаешь в один из этих каталогов файл Decoder.pm
С этого момента модуль будет готов к использованию.

Открывем редактор и пишем такую программу:
Код

#!/usr/bin/perl
use Decoder;

# Объявим сразу массив и строку, с кирилицей. Они нам понадобятся для теста.
my @names = qw( Денис Антон Елена Светлана );
$str = "Это просто строка";

# Для начала выведем в STDOUT значение скалярной переменной $str
print to_dos "$str\n";
# Это просто разделитель, на него не обращаем внимания
print "-" x 80, "\n";

# Теперь выведем массив в STDOUT
print to_dos join("\n", @names) . "\n";
# Это просто разделитель, на него не обращаем внимания
print "-" x 80, "\n";

# Если мы результат декодирования сохранить в массиве, то пишем так:
my @dos_names = to_dos \@names;
print "@dos_names\n";
# Это просто разделитель, на него не обращаем внимания
print "-" x 80, "\n";

Если необходимо перевести строку в win1251, то делаем это точно так же, как и в примере выше, только вместо to_dos пишем to_win.

Удачи.

Зы: Предлагаю совместными усилиями доделать этот модуль, т.е. добавить конвертацию строки и в другие известные кодировки, документировать его в POD формате. После чего выложим его в раздел Исходники, который находится рядом с FAQ. Я конечно могу и сам это сделать, но тогда придётся подождать, так как времени сейчас практически нет, потому, пока, могу лишь поувствовать вместе с вами. smile

Это сообщение отредактировал(а) korob2001 - 16.6.2005, 19:07

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Decoder.zip 0,36 Kb


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
TwiSteR
Дата 17.6.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

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



korob2001 Впереди планеты всей !!!
Спасибо !!!
--------------------
PM MAIL WWW ICQ   Вверх
Vaneska
Дата 18.6.2005, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 15.3.2005
Где: Москва

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



А можно про модуль по подробней?
что означает вот этот регексп?
Код

$str =~ y/\200-\257\340-\361/\300-\377\250\227/;

--------------------
http://isokolov.blogspot.com/
PM MAIL ICQ   Вверх
korob2001
Дата 19.6.2005, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Это не регексп, это транслитерация подобная tr///; Здесь сложного ничего нет, транслитерация проходит строку символ за символом и заменяет его на соответствующий, который стоит во второй его части.
Например если есть строка Hello, нам нужно перевести все буквы l, в верхний регистр.:
Код

#!/usr/bin/perl -w
$str =  "Hello";
$str =~ tr/l/L/;
print $str;

Вобщем tr/// и y/// это одно и то же.

Это сообщение отредактировал(а) korob2001 - 19.6.2005, 11:18


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
kostofffan
Дата 19.6.2005, 22:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











korob2001, а ты бы не мог выложить сюда листинг модуля. А то что-то ваши правила по скачиванию... :(((((((
  Вверх
korob2001
Дата 19.6.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Цитата

korob2001, а ты бы не мог выложить сюда листинг модуля. А то что-то ваши правила по скачиванию... smile((((((

Пожалуйста:
Код

package Decoder;

require Exporter;
push( @ISA, 'Exporter' );
@EXPORT = qw( to_dos to_win );
@EXPORT_OK = qw();

sub to_win {
    my $str = shift;
    if ( ref( $str ) ) {
         y/\200-\257\340-\361/\300-\377\250\227/ for @$str;
    } else {
         $str =~ y/\200-\257\340-\361/\300-\377\250\227/;
    }
    return (wantarray && ref( $str )) ? @$str : $str;
}

sub to_dos {
    my $str = shift;
    if ( ref( $str ) ) {
         y/\300-\377\250\227/\200-\257\340-\361/ for @$str;
    } else {
         $str =~ y/\300-\377\250\227/\200-\257\340-\361/;
    }
    return (wantarray && ref( $str )) ? @$str : $str;
}

1;



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Vaneska
Дата 20.6.2005, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 15.3.2005
Где: Москва

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



korob2001, я так понимаю, что "\200" - это код символа, а "-" перечистение, типа 0..9?
--------------------
http://isokolov.blogspot.com/
PM MAIL ICQ   Вверх
korob2001
Дата 20.6.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Да. Если запустить этот код на выполнение,
Код

#!/usr/bin/perl -w
use strict;
#print "\320" x 15, "\n";
print "\317\320\310\302\305\322 \314\310\320\n";

на выходе получишь строку "ПРИВЕТ МИР!"

Это сообщение отредактировал(а) korob2001 - 20.6.2005, 12:42


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


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

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


 




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


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

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