Получение ошибки при вставке в MySQL - PullRequest
3 голосов
/ 27 ноября 2009
_mysql_exceptions.Warning: Incorrect string value: '\xE7\xB9\x81\xE9\xAB\x94...' for column 'html' at row 1


def getSource(theurl, moved = 0):
    if moved == 1:
        theurl = urllib2.urlopen(theurl).geturl()
    urlReq = urllib2.Request(theurl)
    urlReq.add_header('User-Agent',random.choice(agents))
    urlResponse = urllib2.urlopen(urlReq)
    htmlSource = urlResponse.read()
    return htmlSource

new_u = Url(source_url = source_url, source_url_short = source_url_short, source_url_hash = source_url_hash, html = htmlSource)
new_u.save()

Почему это происходит? Я в основном загружаю URL страницы ... и затем сохраняю ее в базу данных, используя Django.

Это бывает только иногда .... а иногда работает нормально.

Редактировать: похоже, мне нужно установить базу данных в UTF-8? Какова команда, чтобы сделать это?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2009

Вам необходимо обеспечить правильное кодирование строки. Например. строка, которую вы предоставляете django, не имеет кодировки UTF-8, и поэтому некоторые символы не могут быть разрешены.

Несколько полезных советов о том, как найти кодировку запрашиваемой страницы, можно найти здесь: urllib2, прочитанный в Unicode

0 голосов
/ 27 ноября 2009

Есть 2 способа, если вы хотите изменить набор символов в MySQL. Во-первых, по умолчанию используется база данных, см. База данных MySQL Alter , и второе для каждой таблицы: MySQL Alter Table .

База данных дает кодировку по умолчанию для, я полагаю, новых таблиц. это может быть переопределено для каждой таблицы, что вам нужно сделать, так как вы уже есть таблицы. "utf8" - поддерживаемый набор символов.

Также посмотрите Блог о UTF8 с django и MySQL .

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