插入MySQL时出现错误

3 投票
2 回答
3125 浏览
提问于 2025-04-15 16:27
_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()

为什么会这样呢? 我基本上是在下载一个页面的链接...然后用Django把它保存到数据库里。

这种情况有时候会发生...有时候又能正常工作。

编辑:似乎我需要把数据库设置为UTF-8?那该怎么做呢?

2 个回答

0

如果你想在MySQL中更改字符集,有两种方法可以选择。

第一种是更改数据库的默认设置,具体可以参考MySQL Alter database的说明。第二种方法是针对每个表进行更改,详细信息可以查看MySQL Alter Table

数据库会为新建的表设置默认的字符集。不过,如果你已经有了表,就需要单独为每个表设置字符集。"utf8"是一个被支持的字符集。

另外,你也可以看看关于Django和MySQL使用UTF8的博客

3

你基本上需要确保字符串的编码是正确的。比如,你给django的字符串不是UTF-8编码的,所以有些字符无法被识别。

关于如何找到请求页面的编码,有一些有用的建议可以在这里找到:urllib2读取为Unicode

撰写回答