Sqlite удалить символы un utf-8

У меня есть sqlite db, в котором есть некоторые сумасшедшие персонажи ascii, и я хотел бы удалить их, но я понятия не имею, как это сделать. Я искал некоторые вещи и обнаружил, что некоторые люди говорят использовать REGEXP с mysql, но это заставило ошибку сказать, что REGEXP не был распознан.

Вот ошибка, которую я получаю:

sqlalchemy.exc.OperationalError: (OperationalError) Could not decode to UTF-8 column 'table_name' with text ...

Спасибо за помощь

Ответ 1

Ну, если вы действительно хотите перекодировать богатую строку юникода в простую строку ascii (и не против некоторых goofs), вы можете использовать это:

import unicodedata as ud
def shoehorn_unicode_into_ascii(s):
    # This removes accents, but also other things, like ß‘’""
    return ud.normalize('NFKD', s).encode('ascii','ignore')

Для более полного решения (с несколько меньшим количеством ошибок, но требующим стороннего модуля unidecode), см. этот ответ.

Действительно, лучшим решением является работа с данными Unicode по всему вашему коду в максимально возможной степени и переход к кодировке только при необходимости.

Ответ 2

django.utils.encoding имеет богатый набор надежных функций кодирования и декодирования Unicode.