INSERT到MySQL时出错

时间:2009-11-27 12:21:54

标签: python mysql html database django

_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 个答案:

答案 0 :(得分:3)

您基本上需要确保正确的字符串编码。例如。你提供给django的字符串不是UTF-8编码的,因此无法解析某些字符。

有关如何查找所请求页面编码的一些有用建议,请访问:urllib2 read to Unicode

答案 1 :(得分:0)

如果要更改MySQL中的字符集,有两种方法可以解决。 首先是数据库的默认值,请参阅MySQL Alter database, 第二个是每桌:MySQL Alter Table

数据库为我提供了新表的默认字符集。这个 可以在每个表的基础上覆盖,您需要这样做 已经有桌子了。 “utf8”是受支持的字符集。

另请查看Blog about UTF8 with django and MySQL