Какие проблемы я должен ожидать когда движущийся код Perl прежней версии к UTF-8?

Если Вы имеете в виду pydb, нет никакого способа сделать это. В том направлении было некоторое усилие: видят фиксацию svn , но от нее отказались. Предположительно winpdb поддерживает его .

7
задан Sinan Ünür 25 November 2009 в 17:38
поделиться

2 ответа

Несколько лет назад я переместил нашу внутреннюю платформу mod_perl (~ 35k LOC) на UTF-8. Вот вещи, которые мы должны были рассмотреть / изменить:

  • несмотря на совет perl doc «только при необходимости», используйте «use utf8;» в каждом исходном файле - это дает вам единообразие.
  • преобразуйте вашу базу данных в UTF-8 и убедитесь, что ваша конфигурация БД устанавливает кодировку соединения на UTF-8 (в MySQL при этом обратите внимание на проблемы с длиной поля с VARCHAR)
  • используют последнюю версию DBI - более старые версии неправильно устанавливают флаг utf8 для возвращаемых скаляров
  • используйте модуль Encode, избегайте использования встроенных в perl функций utf8, если вы точно не знаете, с какими данными вы имеете дело
  • при чтении файлов UTF-8 укажите уровень - open ($ fh, "<: utf8", $ filename)
  • в ОС в стиле RedHat (даже выпусках 2008 года) включенным библиотекам не понравится чтение XML-файлов, хранящихся в скалярах utf8 - обновите perl или просто используйте слой : raw
  • в старых версиях Perl (даже версиях 5.8.x) некоторые старые строковые функции могут быть непредсказуемыми - например. $ b = substr (lc ($ utf8string), 0,2048) дает случайный сбой, но $ a = lc ($ utf8string); $ b = substr ($ a, 0,2048) работает!
  • не забудьте преобразовать введенные вами данные - например, в веб-приложении входящие данные формы могут нуждаться в декодировании
  • , чтобы все сотрудники разработчиков знали, в каком направлении используются термины кодирование / декодирование - строка utf8 в Perl имеет / де / -кодированную форму, необработанная строка байтов, содержащая Данные utf8 / en / -coded
  • правильно обрабатывают ваши URL-адреса - / en / -кодируют строку utf8 в байты, а затем выполняют кодировку% xx для создания формы ASCII URL-адреса,
4
ответ дан 6 December 2019 в 14:05
поделиться

Прагма utf8 просто сообщает Perl, что ваш исходный код закодирован в UTF-8. Если вы использовали только ASCII в своем исходном коде, у вас не возникнет проблем с Perl пониманием исходного кода. Возможно, вы захотите создать ветку в системе управления версиями на всякий случай. :)

Если вам нужно иметь дело с данными UTF-8 из файлов или записывать UTF-8 в файлы, вам нужно установить кодировки на файловых дескрипторах и закодировать ваши данные так, как этого ожидают внешние биты. См., Например, Может ли Perl-скрипт с кодировкой utf8 открыть имя файла, закодированное как GB2312? .

Ознакомьтесь с документацией Perl, которая рассказывает вам о Unicode:

См. также Советы Джурда по Perl Unicode .

11
ответ дан 6 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: