插入MySQL时出现错误
_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