sqlite удалить не utf-8 символов - PullRequest
3 голосов
/ 27 августа 2010

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

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

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

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

Ответы [ 2 ]

1 голос
/ 27 августа 2010

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

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во всем коде, насколько это возможно, и переходите к кодировке только при необходимости.

0 голосов
/ 14 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...