Ten sam problem napotkałem podczas korzystania z modułu Python MySQLdb. Ponieważ MySQL pozwoli Ci przechowywać prawie wszystkie dane binarne, które chcesz w polu tekstowym, niezależnie od zestawu znaków, znalazłem moje rozwiązanie tutaj:
Korzystanie z UTF8 z MySQLdb Pythona
Edycja:Cytuj z powyższego adresu URL, aby spełnić prośbę w pierwszym komentarzu...
"UnicodeEncodeError:kodek 'latin-1' nie może zakodować znaku..."
Dzieje się tak, ponieważ MySQLdb zwykle próbuje zakodować wszystko do latin-1. Można to naprawić, wykonując następujące polecenia zaraz po nawiązaniu połączenia:
db.set_character_set('utf8')
dbc.execute('SET NAMES utf8;')
dbc.execute('SET CHARACTER SET utf8;')
dbc.execute('SET character_set_connection=utf8;')
"db" jest wynikiem MySQLdb.connect()
, a „dbc” jest wynikiem db.cursor()
.