Python商店ó&引用;作为「ó&引用;
我使用scrapy从一个网站获取信息,根据w3验证程序是utf-8 我的python项目已经完成Python商店ó&引用;作为「ó&引用;,python,mysql,encoding,Python,Mysql,Encoding,我使用scrapy从一个网站获取信息,根据w3验证程序是utf-8 我的python项目已经完成 # -*- coding: utf-8 -*- 我收到一些像洛佩兹J这样的名字,当我打印出来时,它显示的很好 但是当我想将它存储到mysql中时,我得到了一些关于ascii不能编码的错误 如果我使用.encode('ascii','ignore')我得到:Lpez J 如果我使用.encode('ascii','replace')我得到:López J 如果我使用.encode('utf-8')
# -*- coding: utf-8 -*-
我收到一些像洛佩兹J这样的名字,当我打印出来时,它显示的很好
但是当我想将它存储到mysql中时,我得到了一些关于ascii不能编码的错误
如果我使用.encode('ascii','ignore')
我得到:Lpez J
如果我使用.encode('ascii','replace')
我得到:López J
如果我使用.encode('utf-8')
我得到:López J
我该怎么办?
我在这里遇到了一个大麻烦:“(检查您的和字符集
作为快速测试,请尝试执行
SET NAMES 'utf8';
连接后立即。检查您的和字符集
作为快速测试,请尝试执行
SET NAMES 'utf8';
连接后立即。当您连接到数据库时,使用
charset='utf-8',将_unicode=True
与其他关键字一起使用到connect()
方法。这将使数据库接受并返回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
当您连接到数据库时,请使用
charset='utf-8',将_unicode=True
与其他关键字一起使用到connect()
方法。这将使数据库接受并返回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
@BurhanKhalid:不鼓励在StackOverflow上使用这种类型的注释。我正在尝试这样做,我正在应用这些解决方案,但没有结果。您是否使用正确的编码连接到mysql?在插入数据库之前,请尝试执行
SET NAMES UTF8
。@DavidRobinson哎呀,我不知道……我是新手,从来都不知道必须这么做,但还是这么做了。@DanielOrtizCosta:没关系,欢迎使用StackOverflow!@Burnkhalid:不鼓励对StackOverflow使用这种类型的注释。我正在尝试这样做,我正在应用这些解决方案,但没有结果。您是否使用正确的编码连接到mysql?请在插入之前尝试执行设置名称UTF8
到数据库。@DavidRobinson oops,我不知道……我是新手,从来不知道我必须这么做,就这么做了。@DanielOrtizCosta:好的,欢迎来到StackOverflow!名称引用什么,列?数据库?表?我已经将所有字符集设置为utf8和utf8 general…@DanielOrtizCosta阅读了连接链接-我想是有点奇怪hing与python相关,而不是与mysql相关我尝试过使用java,它可以工作…名称引用到什么,列?数据库?表?我已经将所有字符集设置为utf8和utf8 general…@DanielortzCosta阅读连接链接-我想它与python相关,而不是与mysql相关我尝试过使用java,它可以工作…我只是没有帽子,我还是有同样的问题:(我已经编辑了我的答案来举一个例子。请检查它,也许粘贴你的代码。我不知道发生了什么…我只是没有做任何.encode,它们成功地存储了,但我删除了.encode到我使用Scrasty获得的其他字段,我得到了这个错误…为什么有时我需要它,有时我不需要它?对不起,如果很难的话没有代码示例。请确保您了解python中的unicode(特别是您了解什么是字符串(py3k中的字节)、什么是unicode对象(py3k中的字符串)、什么是解码和什么是编码。阅读例如:我刚刚做了这件事,我仍然遇到同样的问题:(我已经编辑了我的答案来举一个例子。请检查它,也许粘贴你的代码。我不知道发生了什么…我只是没有做任何.encode,它们成功地存储了,但我删除了.encode到我使用Scrasty获得的其他字段,我得到了这个错误…为什么有时我需要它,有时我不需要它?对不起,如果很难的话没有代码示例。请确保您了解python中的unicode(特别是您了解什么是字符串(py3k中的字节)、什么是unicode对象(py3k中的字符串)、什么是解码和什么是编码。请阅读以下内容: