2009-11-27 2 views
3
_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.Ошибка при вводе INSERT в MySQL

Это случается иногда ... и иногда это нормально работает.

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

+0

Код, в котором вы выполняете запрос, пожалуйста ... – Bobby

+0

Бобби, запрос new_u, new_u.save(). Это запрос Django – TIMEX

+0

@alex: Охх ... никогда не работал с этой системой. Лучше всего предположить, что вы не избегаете html-String, и он пытается вставить «ошибочные» значения. Для PHP функциональность называется mysql_real_escape_string. – Bobby

ответ

3

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

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

0

Есть 2 способа, чтобы пойти, если вы хотите изменить набор символов в MySQL. Первый по умолчанию для базы данных, см. MySQL Alter database, , а второй за стол: MySQL Alter Table.

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

Также посмотрите на Blog about UTF8 with django and MySQL.

Смежные вопросы