Включить Unicode "глобально" в Python - PullRequest
3 голосов
/ 01 февраля 2010

возможно ли избежать того, чтобы поместить это на каждой странице?

 # -*- coding: utf-8 -*-

Я бы очень хотел, чтобы Python по умолчанию использовал это. Заранее спасибо!

Ответы [ 3 ]

9 голосов
/ 01 февраля 2010

В Python 3 кодировкой по умолчанию является UTF-8, поэтому вам больше не нужно задавать ее явно. Однако нет способа «глобально» установить кодировку источника по умолчанию, и история показала, что такие глобальные параметры, как правило, являются плохой идеей. (Например, опции -U и -Q для Python и sys.setdefaultencoding () возвращаются, когда они у нас есть.) Вы (напрямую) не контролируете весь источник, который импортируется в вашу программу, потому что он включает в себя стандартный библиотека и любые сторонние модули, которые вы используете прямо или косвенно.

Также обратите внимание, что Unicode не включается, как предполагает заголовок вашего вопроса. Это делает исходную кодировку UTF-8, что означает, что любые не-ASCII-символы в литералах Юникода (например, u'spæm') будут интерпретироваться с использованием этой кодировки. Он не сделает внезапно не-юникодные литералы ('spam' и "spam") внезапно юникодными, и не будет ничего делать с не-литералами где-либо в вашем коде.

1 голос
/ 01 февраля 2010

Это особенность Python 3.0

Это была одна из вещей, которая была сделана в Python 3, потому что это нарушило бы обратную совместимость, поэтому вы не найдете такой глобальной опции в 2.x

0 голосов
/ 01 февраля 2010

Это очень плохая идея для Python 2, потому что вы будете ожидать поведения, которое задано только на вашем компьютере разработчика. Это означает, что когда ваша библиотека выходит к кому-то другому, или к хост-серверу, или где-либо еще, любое ее использование приведет к переполнению журналов UnicodeDecodeError s.

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