LINUX.ORG.RU

[perl] Запись/модификация UTF16-LE файла


0

1

Всем привет,

понадобилось тут написать скрипт для обработки виндового текстового файлика. В итоге, покопавшись в инете, я пришёл к выводу, что чего-то я определённо не понимаю. Например того, как записать файл в UTF16-LE. Набросал тут простой семпл, который не работает, как я ожидал:

#!/usr/bin/env perl
use strict;
use warnings;

use Encode;
use PerlIO::encoding;

open OUT, ">:raw:encoding(UTF-16LE)", "test.txt";
my $out = ".\r\n";
print OUT encode("UTF-16LE", $out);
close OUT;

На выходе получаем:

$ file test.txt 
test.txt: data

Здесь ожидалось

Little-endian UTF-16 Unicode text, with CRLF line terminators

Далее:

$ hexdump test.txt 
0000000 002e 0000 000d 0000 000a 0000          
000000c

Почему-то не вставляются первые байты, определяющие кодировку.

Вопрос: что я делаю не так? Что конкретно нужно сделать, чтобы из перлового скрипта создать Little-endian UTF-16 Unicode text?

Всем заранее спасибо.

★★★★★

В начале файла должен быть маркер 0xFE 0xFF , чтобы файл определялся. Но это вообще , а насчет перла не знаю . Что в файле , если hex посмотреть? Правильная кодировка?

Loki13 ★★★★★ ()

Они и не должны туда вставляться. Сам допиши руками.

Reset ★★★★★ ()

> понадобилось тут написать скрипт для обработки виндового текстового файлика.

на винфак.

arsi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.