Python MySQL的Unicode错误

问题描述:

我试图在Python中使用_mysql模块插入一个包含é - 或\ xe9(INSERT INTO tbl1(text)VALUES(“fiancé”))的查询到MySQL表中。
我的查询是unicode,当我调用_mysql.connect(...)。query(query)时,我得到一个UnicodeEncodeError:'ascii'编解码器无法编码字符u'\ xe9'在位置X :ordinal不在范围内(128)。
显然,对查询的调用导致unicode字符串以某种方式转换为ASCII,但问题是为什么?我的数据库在utf8中,并且连接用标志use_unicode = True和charset ='utf8'打开。 _mysql或MySQLdb是否支持unicode?我错过了别的吗?Python MySQL的Unicode错误

谢谢!

+0

如何分享完整的追溯? – 2011-04-14 04:59:48

我知道这并不直接回答你的问题,但为什么你不使用准备好的语句?这将做两件事:可能解决你的问题,几乎肯定会修复你几乎可以肯定得到的SQLi错误。

如果你不这样做,你绝对肯定你的字符串本身是unicode?如果你只是天真地使用python 2.7中的字符串,它可能被强制转换为ASCII字符串。