Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Обработка юникод файлов на Perl

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
shumar



Зарегистрирован: 13.01.2007
Сообщения: 2

СообщениеДобавлено: Сб Янв 13 2007 22:07    Заголовок сообщения: Обработка юникод файлов на Perl Ответить с цитатой

Есть один большой юникод файл, необходимо сделать из него несколько маленьких файлов, разбив исходный на несколько частей.
По сути первые несколько строк копируются в первый файл, следующие - во второй и т.д.
Проблема в том, что у всех файлов кроме первого не выставляются юникод байты вначале файла, которые нужны для разпознавания кодировки.
Как можно их выставить их вручную(байты 0xEF, 0xBB, 0xBF), или как автоматически создавать юникод файл где они уже выставлены?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Jail



Зарегистрирован: 16.01.2007
Сообщения: 180
Откуда: Russia

СообщениеДобавлено: Вс Янв 21 2007 20:38    Заголовок сообщения: Ответить с цитатой

А еслив при разбивке файла эти самые биты записывать в ассоциативный массив в виде ключей))) А потом уже втыкать в разбитых файлах.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Ajaja



Зарегистрирован: 31.01.2007
Сообщения: 1

СообщениеДобавлено: Ср Янв 31 2007 17:42    Заголовок сообщения: Re: Обработка юникод файлов на Perl Ответить с цитатой

shumar писал(а):
Есть один большой юникод файл, необходимо сделать из него несколько маленьких файлов, разбив исходный на несколько частей.
По сути первые несколько строк копируются в первый файл, следующие - во второй и т.д.
Проблема в том, что у всех файлов кроме первого не выставляются юникод байты вначале файла, которые нужны для разпознавания кодировки.
Как можно их выставить их вручную(байты 0xEF, 0xBB, 0xBF), или как автоматически создавать юникод файл где они уже выставлены?

Для UTF-8:
Код:
open(F,">:raw:crlf:utf8",$file);
print F "\x{FEFF}";

Для других кодировок:
Код:
open(F,">:raw:encoding(UTF-16LE):crlf:utf8",$file);
print F "\x{FEFF}";


Считывать файлы желательно тоже в правильной кодировке:
Код:
open(F,"<:raw:crlf:utf8",$file);

или например:
Код:
open(F,"<:raw:encoding(UTF-16BE):crlf:utf8",$file);


Вообще в перле очень удобная работа с кодировками. Пример преобразование CP866->UTF-16LE:
Код:
open(F1,"<:raw:encoding(CP-866):crlf:utf8",$ARGV[0]) or die "Cannot open file: $ARGV[0] \n $!";
open(F2,">:raw:encoding(UTF-16LE):crlf:utf8",$ARGV[1]) or die "Cannot create file: $ARGV[1] \n $!";
print F2 "\x{FEFF}";
print F2 while <F1>;
close F1;
close F2;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...