Я помогаю клиенту преобразовать свой сайт доски объявлений с плоским файлом Perl из ISO-8859-1 в Unicode.
Поскольку это мой первый раз, я хотел бы узнать, завершен ли следующий "контрольный список". Все хорошо работает в тестировании, но мне может не хватать чего-то, что происходило бы только в редких случаях.
Это то, что я сделал до сих пор (простите меня за включение только "сводных" примеров кода):
-
Убедитесь, что файлы всегда читаются и записываются в UTF-8:
use open ':utf8';
-
Убедитесь, что вход CGI получен как UTF-8 (сайт не использует CGI.pm):
s{%([a-fA-F0-9]{2})}{ pack ("C", hex ($1)) }eg; # Kept from existing code s{%u([0-9A-F]{4})}{ pack ('U*', hex ($1)) }eg; # Added utf8::decode $_;
-
Убедитесь, что текст напечатан как UTF-8:
binmode STDOUT, ':utf8';
-
Убедитесь, что браузеры интерпретируют мой контент как UTF-8:
Content-Type: text/html; charset=UTF-8 <meta http-equiv="content-type" content="text/html;charset=UTF-8">
-
Убедитесь, что формы отправляют UTF-8 (возможно, не обязательно, если установлена кодировка страницы):
accept-charset="UTF-8"
-
Не думаю, что мне нужно следующее, поскольку встроенный текст (меню, заголовки и т.д.) находится только в ASCII:
use utf8;
Это выглядит разумно или я что-то не хватает?
EDIT: Я должен, вероятно, также упомянуть, что мы будем запускать одноразовый пакет для чтения всех существующих файлов текстовых данных и сохранения их в кодировке UTF-8.