我有一个 Python scraper,它可以抓取网站并将数据插入 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默认使用latin编码,如果你的mysql数据库不支持utf-8,请使用this
只需在 mysql 配置文件中的 [client] 下添加 default-character-set = utf8
和 [mysqld] 下的 character-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。为了安全起见,您可以添加#coding: utf8
在你的python代码中。注意,它是一个注释。顺便说一句,你不必在mysql5.6中设置编码。
关于python - UnicodeEncodeError 并将数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381318/