Какую кодировку контента использует скрипт Perl CGI по умолчанию?

StackOverflow https://stackoverflow.com/questions/179441

Вопрос

Я модифицирую зрелое CGI-приложение, написанное на Perl, и возник вопрос о кодировании контента.Браузер сообщает, что содержимое закодировано по стандарту iso-8859-1, и приложение объявляет iso-8859-1 в качестве кодировки в заголовках HTTP, но, похоже, никогда не на самом деле делаю кодировка.Ни один из различных методов кодирования, описанных в руководствах по perldoc (Кодировать, Кодирование, Открыть) используются в коде, поэтому я немного сбит с толку относительно того, как на самом деле кодируется документ.

Как уже упоминалось, приложение является довольно зрелым и, вероятно, предшествует многим современным методам кодирования.Кто-нибудь знает о каких-либо устаревших методах, которые мне следует искать?К какой кодировке Perl относится по умолчанию, когда разработчик не предоставляет никаких указаний?

Спасибо

Это было полезно?

Решение

По умолчанию Perl обрабатывает строки как последовательности байтов, поэтому, если вы прочитаете из файла и распечатаете его в стандартный вывод, он выдаст ту же последовательность байтов.Если ваши шаблоны имеют формат Latin-1, ваш вывод также будет Latin-1.

Если вы используете строку в контексте текстовой строки (например, с uc, lc и так далее) perl предполагает семантику Latin-1, если только строка не была декодирована ранее.

Подробнее о Perl, кодировках и кодировках

Другие советы

Perl ничего не предполагает, но браузер предполагает, что кодирование обычно основано на догадках.Документы выводятся непосредственно, точно так же, как они были написаны, если не используется ни один из методов кодирования.

Вы можете указать кодировку в заголовке HTTP Content-Type.

Первое, на что я бы обратил внимание, - это конфигурация сервера.Если вы не устанавливаете заголовок content-encoding в программе, вы, скорее всего, принимаете предположение сервера.

Запустите скрипт отдельно от сервера, чтобы увидеть, каков его фактический результат.Когда сервер получает выходные данные CGI-программы (это не nph), сервер исправляет заголовок для всего, что, по его мнению, отсутствует, прежде чем отправить его клиенту.

Если браузер сообщает о содержимом как iso-8859-1, возможно, ваш perl-скрипт не вывел правильные заголовки для указания кодировки?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top