我使用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
我该怎么办?
我在这里遇到了大麻烦:'(
最佳答案
当您连接到数据库时,将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