我有一个Python scraper,它可以删除一个web站点并将数据插入MySql数据库。突然我犯了个错误
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u20ac' in position 39: ordinal not in range(256)当我解析包含EURO -- €1符号的字符串时。
我看到一些文章描述了如何解决这个问题,但不知道如何将它们应用到我的问题上。我只是使用BeautifulSoup来刮取数据,而不是手动编码/解码。
我使用这个模块import MySQLdb来处理MySql。
那么我该如何解决这个问题呢?

最佳答案

我之前也遇到过同样的问题,我想是因为Python默认使用unicode编码,而mysql默认使用拉丁文编码,如果mysql数据库不支持utf-8,请使用this
只需在mysql配置文件的[client]下和[mysqld]下分别添加default-character-set = utf8character-set-server = utf8,linux下的mysql配置文件是/etc/my.cnf,我不知道windows下的位置,你可以自己找到,同时,你可以使用sql_con = MySQLdb.connect(host=MYSQL_ADDR , user=MYSQL_USER , passwd=MYSQL_PWD , db=MYSQL_DB , charset="utf8")连接mysql,为了安全,你可以在python代码中添加#coding: utf8,注意,这是一个注释在mysql5.6中设置编码。

07-26 08:11
查看更多