Установка выходной кодировки по умолчанию в Python 2 - это хорошо известная идиома
Eek!Это известная идиома в Python 2?Мне это кажется опасной ошибкой.
Это наверняка испортит любой скрипт, который пытается записать двоичный файл в стандартный вывод (например, вам понадобится, если вы CGI-скрипт, возвращающий изображение),Байты и символы - совершенно разные животные;не очень хорошая идея, чтобы обезопасить интерфейс, который определен для приема байтов, с тем, который принимает только символы.
CGI и HTTP вообще явно работают с байтами.Вы должны только отправлять байты в sys.stdout.В Python 3 это означает использование sys.stdout.buffer.write
для прямой отправки байтов.Кодирование содержимого страницы в соответствии с ее параметром charset
должно обрабатываться на более высоком уровне в вашем приложении (в случаях, когда вы возвращаете текстовое содержимое, а не двоичное).Это также означает, что print
больше не годится для CGI.
(Чтобы добавить к путанице, CGIHandler wsgiref был сломан в py3k до недавнего времени, что делает невозможным развертывание WSGI в CGI таким образом.PEP 3333 и Python 3.2, наконец, это выполнимо.)