Найти - Пользователи
Полная версия: удаление sys.setdefaultencoding в site.py
Начало » Python для экспертов » удаление sys.setdefaultencoding в site.py
1
pythonwin
всем доброго времени суток!

Пожалуйста,подскажите, зачем в 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()


коментарий перевел, но не понял зачем забрали возможность изменять кодировку после инициализации. Пожалуйста, подскажите - какая причина того, что запретили изменять кодировку?
bialix
В справке к Питону 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’
pythonwin
bialix
sys.getdefaultencoding() всегда дает ‘ascii’
в linux также? или по умолчанию utf-8 ?
bialix
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'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB