UnicodeEncodeError when inserting Chinese characters into mysql in python
UnicodeEncodeError when inserting Chinese characters into mysql in python
我正在使用 Beautifulsoup 从一个中文网站上抓取中文文本,我试图通过 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 源文件的编码,但它不起作用。但是,当我直接在我的文本编辑器中输入相同的汉字时(我使用的是 sublime text), 它工作得很好,我可以将它插入 mysql 并显示在 mysql控制台正确(我已经将mysql中table的CHARACTER SET设置为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) "
https://github.com/shawnli2010/JHSaver/blob/master/LeTV_scraper.py
Python 是否在进行替换时构造添加引号?它需要。
您是否建立了 utf8mb4 连接?
是table/columnCHARACTER SET utf8mb4
吗?
我建议使用 utf8mb4 而不是 utf8,因为中文有一些字符需要 4 个字节。
我正在使用 Beautifulsoup 从一个中文网站上抓取中文文本,我试图通过 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 源文件的编码,但它不起作用。但是,当我直接在我的文本编辑器中输入相同的汉字时(我使用的是 sublime text), 它工作得很好,我可以将它插入 mysql 并显示在 mysql控制台正确(我已经将mysql中table的CHARACTER SET设置为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) "
https://github.com/shawnli2010/JHSaver/blob/master/LeTV_scraper.py
Python 是否在进行替换时构造添加引号?它需要。
您是否建立了 utf8mb4 连接?
是table/columnCHARACTER SET utf8mb4
吗?
我建议使用 utf8mb4 而不是 utf8,因为中文有一些字符需要 4 个字节。