我正在将数千万行的文本数据从mysql移到搜索引擎中,但无法成功处理其中一个检索到的字符串中的unicode错误。我已经尝试显式地对检索到的字符串进行编码和解码,以使python抛出unicode异常并了解问题所在。
这个异常是在我的笔记本电脑上运行了数千万行之后抛出的(叹气…),但是我无法捕捉它,跳过那一行,继续我想要的。mysql数据库中的所有文本都应该是utf-8。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 143: invalid continuation byte
下面是我使用mysql连接器/python建立的连接
cnx = mysql.connector.connect(user='root', password='<redacted>',
host='127.0.0.1',
database='bloggz',
charset='utf-8')
以下是数据库字符设置:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR
Variable_name LIKE 'collation%';
7条答案
按热度按时间pdtvr36n1#
-------+
下面的异常处理有什么问题?注意,变量“last\u feeds\u id”也没有打印出来,但这可能只是except子句不起作用的证明。
8yoxcaq72#
------+
avwztpqn3#
------+
yqkkidmi4#
------+
i86rm4rw5#
它抱怨hex
ED
. 你在期待急性-i:í
? 如果是这样,那么您的文本不是utf-8编码的,而是cp1250、dec8、latin1、latin2、latin5中的一个。你的python源代码是从
查看更多python-utf8提示
此外,请在此回顾“最佳实践”
你有
charset='utf-8'
; 我不确定,但也许应该是这样charset='utf8'
. 参考UTF-8
这就是人们所说的角色集。mysql调用它的3字节子集utf8
. 注意没有破折号。vdgimpew6#
-------+
|变量名称值|
+
k7fdbhmy7#
-------+
|字符集客户机utf8|
|字符集连接utf8|
|字符集数据库utf8|
|字符集文件系统二进制|
|字符集结果utf8|
|字符集服务器utf8|
|字符集系统utf8|
|排序规则| utf8 |常规| ci|
|排序规则|数据库| utf8 |常规| ci|
|排序规则|服务器| utf8 |常规| ci|
+