powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Перекодирование данных из STDIN
2 сообщений из 2, страница 1 из 1
Perl: Перекодирование данных из STDIN
    #38004147
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть pl-скрипт в кодировке UTF-8. Скрипт запускается из консоли Windows, в консоли выбрана кодовая страница OEM (CP-866); установка кодовой страницы UTF-8 (chcp 65001) работает, но вызывает различные глюки, поэтому ее использовать не получится.
Поскольку сам скрипт в UTF-8, в нем указывается use utf8. Чтобы при выводе текстов в консоль данные читались, задаю кодировку в PerlIO Layers. И хотелось бы задать кодировку также для STDIN.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
#!/usr/bin/perl -C -w

use strict;
use warnings;
use utf8;

binmode(STDIN, ':encoding(cp866)');
binmode(STDOUT,':encoding(cp866)');
print "Аргументы: " . join(' ',@ARGV) . "\n";



Запускаю:
Код: plaintext
1.
2.
3.
4.
5.
6.
H:\Perl>perl test.pl Тест
"\x{00d2}" does not map to cp866 at test.pl line 23.
"\x{00e5}" does not map to cp866 at test.pl line 23.
"\x{00f1}" does not map to cp866 at test.pl line 23.
"\x{00f2}" does not map to cp866 at test.pl line 23.
Аргументы: \x{00d2}\x{00e5}\x{00f1}\x{00f2}

Если binmode STDIN закомментировать, вывод будет такой же.
Подскажите, как сделать это правильно (без подключения Encode и перекодирования @ARGV вручную)?
По смыслу, для STDIN нужен слой :decoding, но такого нет.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Perl: Перекодирование данных из STDIN
    #38004162
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, если перекодировать вручную, то нужно задавать кодировку CP-1251:
Код: plaintext
$ARGV[$_] = decode('cp1251',$ARGV[$_]) foreach (0..$#ARGV);
Если использовать cp866, то текст искажается.
Однако если задать cp1251 в binmode, это ничего не меняет.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl: Перекодирование данных из STDIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]