Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2007 12:45:45

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

удаление sys.setdefaultencoding в site.py

всем доброго времени суток!

Пожалуйста,подскажите, зачем в site.py удаляют sys.setdefaultencoding ?

def main():
    abs__file__()
    paths_in_sys = removeduppaths()
    if (os.name == "posix" and sys.path and
        os.path.basename(sys.path[-1]) == "Modules"):
        addbuilddir()
    paths_in_sys = addsitepackages(paths_in_sys)
    if sys.platform == 'os2emx':
        setBEGINLIBPATH()
    setquit()
    setcopyright()
    sethelper()
    aliasmbcs()
    setencoding()
    execsitecustomize()
    # Remove sys.setdefaultencoding() so that users cannot change the
    # encoding after initialization.  The test for presence is needed when
    # this module is run as a script, because this code is executed twice.
    if hasattr(sys, "setdefaultencoding"):
        del sys.setdefaultencoding
main()


коментарий перевел, но не понял зачем забрали возможность изменять кодировку после инициализации. Пожалуйста, подскажите - какая причина того, что запретили изменять кодировку?



Офлайн

#2 Янв. 22, 2007 12:58:48

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

удаление sys.setdefaultencoding в site.py

В справке к Питону 2.4 к модулю sys написано:

setdefaultencoding( name)

Set the current default string encoding used by the Unicode implementation. If name does not match any available encoding, LookupError is raised. This function is only intended to be used by the site module implementation and, where needed, by sitecustomize. Once used by the site module, it is removed from the sys module's namespace. New in version 2.0.


Т.е. это внутренняя фишка, не для пользовательского использования.
Поскольку юникод подразумевает какой угодно язык, то я так думаю, что питон тем самым вынуждает всегда явно указывать в какую кодировку программист хочет перекодировать из юникода.
И на всех виндовых машинах, на которых я работал
sys.getdefaultencoding() всегда дает ‘ascii’



Офлайн

#3 Янв. 22, 2007 13:23:21

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

удаление sys.setdefaultencoding в site.py

bialix
sys.getdefaultencoding() всегда дает ‘ascii’
в linux также? или по умолчанию utf-8 ?



Офлайн

#4 Янв. 22, 2007 13:27:08

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

удаление sys.setdefaultencoding в site.py

Python 2.4.1 (#1, Apr 10 2005, 22:30:36)
on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import sys
>>> sys.getdefaultencoding()
'ascii'



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version