Форум сайта python.su
всем доброго времени суток!
Пожалуйста,подскажите, зачем в 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.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’
Офлайн
bialixв linux также? или по умолчанию utf-8 ?
sys.getdefaultencoding() всегда дает ‘ascii’
Офлайн
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'
Офлайн