Нави Гатор
Март 14, 2007 10:58:08
Если кто-то может, объясните, пожалуйста!
Присутстует программа, использующая wx и sqlalchemy.
Задача состоит в том, чтобы данные, допустим, из TextEntryDialoga записать в базу, а затем засунуть в TreeCtrl уже из базы. Сначала при показе дерева появляется ошибка типа “cannot decode to utf-8”. Если использвать при записи “.encode('utf-8')”, а при чтении “.decode('utf-8')” ошибка остаётся. Если использовать только encode, всё работает, но на экран вместо правильного текста вылезают крокозябли (“Р№Р№Р№” вместо “ййй”). Ошибка происходит только на русских символах.
pythonwin
Март 14, 2007 11:22:07
Нави Гатор, покажи пожалуйста код :)
PS посмотри
Использование Unicode в Python (j2a)
j2a
Март 14, 2007 15:14:10
Нави Гатор
Если использовать только encode, всё работает, но на экран вместо правильного текста вылезают крокозябли (“Р№Р№Р№” вместо “ййй”). Ошибка происходит только на русских символах.
Эти “кракозябли” – попытка показать utf-8 текст в cp1251 окружении. По-видимому, у тебя стоит wxpython-ansi. Есть два варианта:
1) либо использовать wxpython-unicode, и использовать юникод внутри программы (рекомендуемый)
2) оставить wxpython-ansi, но явно перекодировать в/из cp1251 (нерекомендуемый)
j2a
Март 14, 2007 19:23:30
вот тут
ты явно кодируешь из юникода в utf-8.
а тут
из utf-8 в юникод.
Абсолютно аналогично и с cp1251
Нави Гатор
Март 15, 2007 09:00:43
Второй вариант ни разу не помогает. С первым проблематично, так как я пишу не один.
Кроме того, разве “# -*- coding: cp1251 -*-” в начале не означает, что все кодируется/декодируется в/из ср1251? Если полностью перезапустить приложение, все становится нормально, но при добавлении новых записей проблема снова возникает. Может это все же что-то с sqlalchemy?
OlDer
Март 15, 2007 10:37:56
Нави Гатор
Может это все же что-то с sqlalchemy?
Прямо как у классика - “Может в консерватории что-то подправить?”. sqlalchemy тут не при чем.
Вам все уже написали. Прочитайте еще тут -
http://wiki.wxpython.org/index.cgi/UnicodeBuild
Нави Гатор
Март 15, 2007 11:58:26
Большое спасибо. Меня и правда жестоко переклинило. Все-таки перешел не wxpython-unicode и все прошло.