Bug 13952 - Желательно, чтобы python использовал кодировку locale
Summary: Желательно, чтобы python использовал кодировку locale
Status: CLOSED WONTFIX
Alias: None
Product: Sisyphus
Classification: Development
Component: python-base (show other bugs)
Version: unstable
Hardware: all Linux
: P1 enhancement
Assignee: Vladimir D. Seleznev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-09 14:51 MSK by Andrew Kornilov
Modified: 2008-07-05 11:12 MSD (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Kornilov 2008-01-09 14:51:06 MSK
Вот, в статье кратко разъяснено в контексте 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'
Comment 1 Ivan Fedorov 2008-01-09 18:58:38 MSK
Я КАТЕГОРИЧЕСКИ ПРОТИВ ЭТОГО!!!

Чините свой софт, пусть он использует locale как положено.
Comment 2 Andrew Kornilov 2008-01-09 19:00:11 MSK
А объяснения будут? Ты в shell code тоже setlocale делаешь в каждом скрипте? :)
Comment 3 Mikhail Gusarov 2008-01-09 19:02:20 MSK
Текущее поведение питона - документированное и одинаковое во всех дистрибутивах.

Проблемы с кривым софтом нужно решать (приведённым в статье) методом правки 
site.py по месту, а не вхреначиванием хаков в Сизиф.

Предлагаю заWONTFIXить.
Comment 4 Andrew Kornilov 2008-01-09 19:08:26 MSK
Не такое уж оно и одинаковое. Я понимаю, что хочется, чтобы ваш софт вел себя
одинаково на всех поддерживаемых платформах при тестировании. А кому-то хочется,
чтобы в ALT-е, как более русскоязычном дистрибутиве, из коробки поддерживались
non-latin кодировки :)
Comment 5 Mikhail Gusarov 2008-01-09 19:10:49 MSK
А это не "из коробки поддерживаются non-latin кодировки", это "кривой софт 
случайно работает после подпирания разными костылями".

Или не работает. Или работает не так как надо, и его надо править дальше.
Comment 6 Andrew Kornilov 2008-01-09 19:24:18 MSK
Я еще посмотрю на другие дистрибутивы. Что это сломает? То, что на non-latin
кодировку python перестанет ругаться? Это плохо?
Comment 7 Mikhail Gusarov 2008-01-09 19:26:03 MSK
Угу. Вместо падения будет неявно корёжить данные.
Comment 8 Andrew Kornilov 2008-01-09 19:31:06 MSK
По-моему, локаль как раз для этого и создана и логично её использовать для
кодировки данных на входе. Как раз в нормальных программах используется вызов
setlocale без указания locale, какая есть, так и используется. 
Comment 9 Mikhail Gusarov 2008-01-09 19:33:52 MSK
На входе, а не внутри и где попало.
Comment 10 Mikhail Gusarov 2008-01-09 19:34:18 MSK
Предлагаю перенести дискуссию в devel@
Comment 11 Andrew Kornilov 2008-01-09 19:44:47 MSK
Так внутри как раз, если вы уверены в ней и она отличается от кодировки locale,
и делается setlocale(конкретная). А так обычно же полагаются на то, что в
getlocale, если не ошибаюсь. А сейчас, получается, нужно в каждом скрипте
устанавливать локаль. В общем, и так и так плохо.

P.S. Давай переносить.
Comment 12 Ivan Fedorov 2008-07-05 11:12:29 MSD
я как был против, так и остался...