Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > encode - не бейте камнями...


Автор: Гость_Гость 16.5.2005, 10:44
Объясните, пожал-ста, почему "фу".encode(к-л кодировка)
кричит, что ascii декодер ничё такого не знает и пр.
т.е. Питон всегда воспринимает "фу" как строку в кодировке
ascii ??? и единственный способ создать строковый объект, содержащий
текст в отличной от ascii кодировке -
это unicode("фу", "кодировка, в которой пишем скрипт").encode("требуемая кодировка"),
причём неплохоб, чтоб эти кодировки совпадали ???
или всё это не так?

Автор: svg 16.5.2005, 16:38
Цитата
кричит, что ascii декодер ничё такого не знает и пр.


Потому как ежели заранее ничего не сказано, Python устанавливает кодировку по умолчанию строк в ascii.
Изменить его мнение можно только в момент инициализации, во время загрузки. Или, для константной строки,
указать кодировку в комментариях в начале файла.
Поэтому у себя в /usr/lib/site-python/sitecustomize.py я всегда прописываю:
Код

import sys, locale
sys.setdefaultencoding(locale.getdefaultlocale()[1])


Более подробно о процессе инициализации можно посмотреть в site.py в системном каталоге Python-а.

Автор: Guest 17.5.2005, 04:49
Спасибо, svg!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)