我使用scrapy从网站获取信息,根据w3验证器是utf-8 ..
我的python项目有
# -*- coding: utf-8 -*-
我收到了一些像LópezJ这样的名字,当我打印出来时,它表现得很好......
但是当我想将它存储到mysql中时,我得到一些关于ascii无法编码等等等等的错误...
如果我使用.encode ('ascii', 'ignore')
,我会得到:Lpez J
如果我使用.encode ('ascii', 'replace')
,我会得到:López J
如果我使用.encode ('utf-8')
,我会得到:López J
我该怎么办? 我在这里遇到了大麻烦:'(
答案 0 :(得分:2)
当您连接到数据库时,请使用charset='utf-8', use_unicode=True
和其他关键字connect()
方法。这应该使dababase接受并返回unicode值,因此您不必(也不应该)手动编码它们。
示例:
>>> import MySQLdb
>>> conn = MySQLdb.connect(... , use_unicode=True, charset='utf8')
>>> cur = conn.cursor()
>>> cur.execute('CREATE TABLE testing(x VARCHAR(20))')
0L
>>> cur.execute('INSERT INTO testing values(%s)', ('López J',))
1L
>>> cur.execute('SELECT * FROM testing')
1L
>>> print cur.fetchall()[0][0]
López J
答案 1 :(得分:1)