python在mysql中插入汉字时出现UnicodeEncodeError

2024-06-17 15:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用beauthoulsoup从一个中文网站上抓取中文文本,我试图通过python中的MySQLdb将我抓取的字符串插入mysql数据库。但是我在执行查询时遇到了UnicodeEncodeError。代码如下:

movie_name_fail = my_beautifulsoup_object.find("div").text
my_cursor.execute("INSERT INTO MOVIE_TABLE VALUES(%s)",movie_name_fail)

它给了我一个错误:

^{pr2}$

但当我这么做的时候

print movie_name_fail

汉字可以正确地打印出来。 我已经宣布

#!/usr/bin/python
# -*- coding: utf-8 -*-

作为我的python源文件的编码,但它不起作用。但是,当我直接在我的文本编辑器中输入相同的汉字时(我使用的是sublime text),效果很好,我可以将其插入mysql并在mysql控制台中正确显示(我已经在mysql中将表的字符集设置为utf8):

movie_name_success = "超人总动员"
my_cursor.execute("INSERT INTO MOVIE_TABLE VALUES(%s)",movie_name_success)

我搞不懂为什么会发生这种错误,以及它是如何起作用的。我真的很感激你的帮助。在

更新

我的python版本是2.7.8,MYSQL版本是5.7.11

我把我的源代码推送到github,它应该能够在第117行重现错误:“db_cursor.executemany(插入sql、电影元组列表)”

https://github.com/shawnli2010/JHSaver/blob/master/LeTV_scraper.py


Tags: textnameexecutemy错误mysqltablemovie
1条回答
网友
1楼 · 发布于 2024-06-17 15:45:51

在进行替换时,Python构造是否添加了引号?它需要。在

您是否为连接建立了utf8mb4?在

表/列是CHARACTER SET utf8mb4?在

More Python notes

我建议用utf8mb4代替utf8,因为中文有些字符需要4个字节。在

相关问题 更多 >