Вот, в статье кратко разъяснено в контексте Zope: http://zope3.ru/stati/faq-howto/chto-delat-esli-v-zope-problemy-s-kodirovkoi/ Должно помочь и в других случаях. Сломать ничего не должно (если только кто-то не полагается на ascii by default). В настоящий момент python чихать хотел на locale: locale LANG=ru_RU.UTF-8 1. без locale: a='тест' >>> a.decode() Traceback (most recent call last): File "<stdin>", line 1, in ? UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128) 2. с locale: a='тест' >>> a.decode() u'\u0442\u0435\u0441\u0442'
Я КАТЕГОРИЧЕСКИ ПРОТИВ ЭТОГО!!! Чините свой софт, пусть он использует locale как положено.
А объяснения будут? Ты в shell code тоже setlocale делаешь в каждом скрипте? :)
Текущее поведение питона - документированное и одинаковое во всех дистрибутивах. Проблемы с кривым софтом нужно решать (приведённым в статье) методом правки site.py по месту, а не вхреначиванием хаков в Сизиф. Предлагаю заWONTFIXить.
Не такое уж оно и одинаковое. Я понимаю, что хочется, чтобы ваш софт вел себя одинаково на всех поддерживаемых платформах при тестировании. А кому-то хочется, чтобы в ALT-е, как более русскоязычном дистрибутиве, из коробки поддерживались non-latin кодировки :)
А это не "из коробки поддерживаются non-latin кодировки", это "кривой софт случайно работает после подпирания разными костылями". Или не работает. Или работает не так как надо, и его надо править дальше.
Я еще посмотрю на другие дистрибутивы. Что это сломает? То, что на non-latin кодировку python перестанет ругаться? Это плохо?
Угу. Вместо падения будет неявно корёжить данные.
По-моему, локаль как раз для этого и создана и логично её использовать для кодировки данных на входе. Как раз в нормальных программах используется вызов setlocale без указания locale, какая есть, так и используется.
На входе, а не внутри и где попало.
Предлагаю перенести дискуссию в devel@
Так внутри как раз, если вы уверены в ней и она отличается от кодировки locale, и делается setlocale(конкретная). А так обычно же полагаются на то, что в getlocale, если не ошибаюсь. А сейчас, получается, нужно в каждом скрипте устанавливать локаль. В общем, и так и так плохо. P.S. Давай переносить.
я как был против, так и остался...