Преобразование файла в формат UTF8 с использованием Perl - PullRequest
4 голосов
/ 10 мая 2010

Как мне преобразовать файл в его формат utf-8, используя Perl? и как проверить, находится ли преобразованный файл в формате utf-8?

Ответы [ 4 ]

3 голосов
/ 10 мая 2010

Установка привязок к библиотеке iconv, такой как Text::Iconv, не требуется, поскольку Perl уже поставляется с собственной библиотекой кодировки символов: Encode. Частично это piconv, iconv(1) аналогично. Используйте его для пакетного конвертирования файлов в UTF-8. ANSI - это просто глупое имя для группы кодировок windows-125?. Скорее всего, у вас есть файлы, закодированные в windows-1252 . Пример:

piconv -f windows-1252 -t UTF-8 < input-file > output-file

Если метаданные отсутствуют, необходимо использовать эвристику для определения кодировки содержимого файла. Я рекомендую Encode::Detect.

1 голос
/ 03 июня 2010

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

например,

my $str = "A string in Perl internal format ....";
my $octets = encode("utf-8",$str,Encode::FB_CROAK);

для проверки UTF вы можете использовать функцию

is_utf8($str,Encode::FB_CROAK) 
1 голос
/ 18 мая 2010

это зависит от строки, которую вы получили. если это файл был загружен - я думаю, этот код поможет. но если это текст из web / text, который преобразовал себя в utf-8 (потому что вы работаете над utf-8), тогда у вас возникнут проблемы с его выяснением.

я обычно использую:

Использовать кодировку :: Угадай

my $ enc = guess_encoding ($ string);

и затем с приведенным выше кодом, я делаю:

использовать Text :: Iconv;
$ converter = Text :: Iconv-> new ($ enc, "utf-8");
$ convert = $ converter-> convert ("Текст для преобразования");

FYI utf-8 список можно найти здесь:

http://www.fileformat.info/info/charset/UTF-8/list.htm?start=1024

http://www.utf8 -chartable.de / unicode-utf8-table.pl? Начать = 1024 & число = 1024 & utf8 = строка-буквальным & unicodeinhtml = * 1026 декабрь ** +1027 *

1 голос
/ 10 мая 2010

Чтобы конвертировать, взгляните на Text :: Iconv

  use Text::Iconv;
  $converter = Text::Iconv->new("fromcode", "tocode");
  $converted = $converter->convert("Text to convert");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...