Я работаю с существующей базой данных SQLite и испытываю ошибки из-за данных, которые кодируются в CP-1252, когда Python ожидает, что он будет UTF-8.
>>> import sqlite3
>>> conn = sqlite3.connect('dnd.sqlite')
>>> curs = conn.cursor()
>>> result = curs.execute("SELECT * FROM dnd_characterclass WHERE id=802")
Traceback (most recent call last):
File "<input>", line 1, in <module>
OperationalError: Could not decode to UTF-8 column 'short_description_html'
with text ' <p>Over a dozen deities have worshipers who are paladins,
promoting law and good across Faer�n, but it is the Weave itself that
Оскорбительный символ \0xfb, который декодирует до û. Другие тексты-нарушители включают "?nd and slay illithids.", который использует "умные кавычки" \0x93 и \0x94.
SQLite, python, unicode и не-utf данные подробно описывают, как эта проблема может быть решена при использовании sqlite3 самостоятельно.
Тем не менее, я использую SQLAlchemy. Как я могу обрабатывать закодированные данные CP-1252 в базе данных SQLite, когда я использую SQLAlchemy?
Edit:
Это также применимо к любым другим смешным кодировкам в SQLite TEXT, например, latin-1, cp437 и т.д.