python - UnicodeEncodeError 并将数据插入数据库

标签 python mysql python-2.7

我有一个 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/

相关文章:

python - Pyqt如何获取小部件的尺寸

php - 计算特定页面的浏览量

python - 如何访问用于 python 中的 urllib 模块的字典值?

python-2.7 - 在 tensorflow 中保存检查点并恢复训练

python名称错误名称未定义

python - 如何使用 QTableWidget PageUp/PageDown 表格?

python - 打印时圆形 float 的简单方法

mysql - 左连接选择最后一行和第一行,左连接选择某行作为列

sql - 如何拆分管道分隔列并将每个值插入新表一次?

python socketserver连接超时