чтение в кодировке 949 данных на Perl

Статус
Закрыто для дальнейших ответов.

max82

Новичок
Регистрация
18.04.2017
Сообщения
1
Доброе времени суток !
ни как не пойму в чем проблема , когда читаю строку так :
Код:
$str = "\xac\xa5\xac\xd1\xac\xdf\xac\xdf\x ac\xed\xac\xd6"; 
print Encode::encode('cp866',Encode :: decode('cp949', $str)) ;
То все в порядке и печатает слово "Данные".

если считываю из файла ту же вроде строку : \xac\xa5\xac\xd1\xac\xdf\xac\xdf\xa c\xed\xac\xd6
то не печатает слово "Данные"
подскажите что не так делаю ! ((

пример (кусок кода):
Код:
open(FILE,'0011.txt') or die ("ERROR FILE $!");
while (<FILE>) { 
$str = $_;
print Encode::encode('cp866',Encode :: decode('cp949', $str)) ;
} 
close(FILE);
очень нужно.Для просмотра ссылки необходимо: Войти или Регистрация Для просмотра ссылки необходимо: Войти или Регистрация
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 040
Perl не знаю, но первая же ссылка в гугле вот что показывает

my $filename = 'data.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";

while (my $row = <$fh>) {
chomp $row;
print "$row\n";
}

1) при открытие указывается кодировка
2) файл сразу открывается в переменную

Попробуй так сделать.
Или для твоего пример - попробуй вывести файл в "оригинальной" кодировке, без преобразования. Если ничего не выведет, то значит неверно открываешь файл и ен(де)кодер тут не при чем.

Вторым вариантом - попробуй сначала открыть файл с нормальной кодировкой.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ