Как установить кодировку по умолчанию в Python (функция setdefaultencoding() не существует)?
Возможный дубликат:
Изменение кодировки по умолчанию для python?
Я читаю дайв в python, и он упоминает установку схемы кодирования по умолчанию python в главе синтаксического анализа XML.
setdefaultencoding используется в python-installed-dir/site-packages/pyanaconda/ sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')
Но когда я запускаю script, он поднимает:
AttributeError: 'module' object has no attribute 'setdefaultencoding'
Как настроить кодировку по умолчанию?
Я использую python 2.7
Решение:
найдите site.py в установке python.
Отредактируйте функцию setencoding
def setencoding():
encoding = "ascii"
if 0:
import locale
loc = locale.getdefaultlocale()
if loc[1]:
encoding = loc[1]
if 0: #changes comes here, change 0 to 1
encoding = "undefined" #the encoding you want
if encoding != "ascii":
sys.setdefaultencoding(encoding)
Я использую python 2.7
Ответы
Ответ 1
Модуль Python sys
имеет функцию setdefaultencoding
с Python 2.0. Тем не менее,
Эта функция предназначена только для использования в реализации модуля сайта и, при необходимости, с помощью sitecustomize. После использования модулем сайта он удаляется из пространства имен модулей sys.
Документы, по крайней мере, на Python 2.1, показывают, что это происходит, поэтому PyAnaconda никогда не подходит для использования этого метода, и я не уверен, почему он когда-либо работал.
Ответ 2
Как настроить кодировку по умолчанию?
Запустите sys.setdefaultencoding
в файле sitecustomize.py
, который должен быть в sys.path(например, lib/site-packages) при запуске Python. Вы можете проверить изменение с помощью sys.getdefaultencoding
.
Изменить для анонимного downvoter:
Кто бы ни отклонил этот ответ, не могли бы вы объяснить? Этот вопрос касается только Python 2.x. В Python 3 нет sys.setdefaultencoding
, если это ваша проблема. Я согласен с тем, как использовать эту функцию, если вы захотите в Python 2. Я не защищал ее использование или рекомендовал ее использование. Библиотека никогда не должна трогать его, поэтому он удаляется из пространства имен sys
после того, как site.py и sitecustomize.py имеют возможность вызвать его. Библиотека также не должна предполагать, что кодировка по умолчанию - ASCII в 2.x. Это до системы. Лично я оставляю его как ASCII.