Юникод с пирамидой, SQLAlchemy

Я использую Pyramid и SQLAlchemy, но следующий упрощенный код:

u = u"\u201C"

m = M()
m.comment = u
m.user_id = 1
session.add( m )
session.commit()

дает мне

UnicodeEncodeError: 'latin-1' codec can't encode character u'\u201c' in position 0: ordinal not in range(256)

что мне нужно, чтобы исправить это?

редактировать:

комментарий представляет собой столбец "MEDIUMTEXT", тип MySQL.


person Timmy    schedule 31.10.2011    source источник
comment
Можете ли вы опубликовать определение класса M?   -  person Petr Viktorin    schedule 01.11.2011


Ответы (2)


Проверьте, закодированы ли таблицы вашей базы данных в кодировке, отличной от Unicode.

Кроме того, если вы хотите, чтобы ваши комментарии были доступны для чтения из phpMyAdmin (или того, что вы используете для подключения к своей БД), вы должны добавить:

?charset=utf8&use_unicode=0

к вашей строке подключения в файле конфигурации приложения

поэтому у вас будет mysql://user:pass@localhost/dbname?charset=utf8&use_unicode=0

person Rotem Tamir    schedule 31.10.2011

Скорее всего, ваш столбец comment должен иметь тип Unicode вместо String.

person Michael Merickel    schedule 31.10.2011