Python: проблемы с печатанием символов в винде

yolki

Данные берутся из mysql, где они хранятся в utf-8.
при печати в консоль (cmd) выводятся вопросики. выглядит примерно так:

?
?
?
?
?
?

при перенаправлении в файл - тоже самое.

Andrey13

нные берутся из mysql, где они хранятся в utf-8.
при печати в консоль (cmd) выводятся воп
может быть это поможет?
unicode(data_from_DB).encode('cp1251')

Phoenix

в консоле вроде что-то типа, 866.
И лучше
 

.encode('cp1251','?')

чтобы эксепшены не вылезали, если символ есть в утф, а в целевой - нету.
Хотя вопросики - это странно. Эксепшены должны вылезать, если он с кодировками мучается. У соединения кодировка какая выставлена?

ppplva

unicode(data_from_DB)
Эта херня сделает decode('ascii'). Автору наверное нужно .decode('utf-8').encode('cp1251')

klyv

какие версии всего? через что подключаешься к БД?

Alena_08_11

set names cp1251 в начале sql запроса не помогает ?

Andbar

По идее, это правильный ответ на вопрос (только не в начале запроса, а первым запросом при подключении) :grin:
Вопросики получаются из-за того, что, например, клиент задаёт при подключении кодировку latin1, а в БД лежат русские строки, которые в этой кодировке не имеют представления.
Кстати, из-за неприспособленности многих продуктов, использующих мускуль, к поддержке различных кодировок на уровне БП, многое где можно встретить уродство - текст в cp1251 задекларированный как latin1. Как правило, поиск и сортировка в такой базе работают крайне криво.

yolki

python 2.6
mysql Ver 14.12 Distrib 5.0.76, for pc-linux-gnu (i686) using readline 6.0
mysql-python-1.2.2
Windows 7 RC
Оставить комментарий
Имя или ник:
Комментарий: