Python: UTF8 e SQLObject

Palavras-chave: Unicode, utf8, SQLObject, TurboGears, erro

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 50: ordinal not in range(128)

Este erro pode ocorrer quando se tenta executar queries que envolvem caracteres Unicode (na query em si ou no resultado) usando SQLObject (o módulo de banco de dados usado no TurboGears).

A solução é forçar o SQLObject a usar UTF-8 internamente e desativar conversões desnecessárias sendo feitas por ele. Para isso modifique sua URI de conexão para algo como:


sqlobject.dburi=
"mysql://root:@localhost:3306/fliki?use_unicode=1&sqlobject_encoding=utf8"

Dependendo da versão do SQLObject pode ser necessário também adicionar o parâmetro charset=utf8 à URI.

This entry was posted in Python. Bookmark the permalink.