Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python商店ó&引用;作为「ó&引用;_Python_Mysql_Encoding - Fatal编程技术网

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')

我使用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')
我得到:
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中的字符串)、什么是解码和什么是编码。请阅读以下内容: