0

我使用scrapy从一个网站上获取信息,根据w3验证器是utf-8 ..

我的python项目有

# -*- coding: utf-8 -*-

我收到了一些像 López J 这样的名字,当我打印出来时,它显示得很好......

但是当我想将它存储到 mysql 中时,我收到一些关于 ascii 无法编码 blah blah blah 的错误......

如果我使用.encode ('ascii', 'ignore')我得到:Lpez J 如果我使用.encode ('ascii', 'replace')我得到:López J 如果我使用.encode ('utf-8')我得到:López J

我应该怎么办?我在这里遇到了大麻烦:'(

4

2 回答 2

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
于 2012-08-28T05:40:17.643 回答
1

检查您的服务器、数据库、表、列连接字符集。

作为快速测试,尝试执行

SET NAMES 'utf8';

连接后立即。

于 2012-08-28T05:32:50.973 回答