我使用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

07-25 23:24