我正在使用优美汤从一个中文网站刮中文文本,我试图将我刮到的字符串通过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)它给了我一个错误:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-7: ordinal not in range(256)但当我做的时候
print movie_name_fail汉字可以很好地打印出来。我已经宣布
#!/usr/bin/python
# -*- coding: utf-8 -*-作为我的python源文件的编码,但是它没有工作。但是,当我将相同的汉字直接输入到文本编辑器(我使用的是崇高文本)时,工作得很好,我可以将它插入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(insert_sql,movie_tuple_list)“
发布于 2016-04-15 20:16:30
在执行替换时,Python构造会添加引号吗?它需要。
您为连接建立了utf8mb4吗?
是表/列CHARACTER SET utf8mb4
我建议使用utf8mb4代替utf8,因为中文有一些字符需要4个字节。
https://stackoverflow.com/questions/36635495
复制相似问题