Python MySQL Unicode错误
我正在尝试在Python中使用_mysq模块将一个包含é(或者说\xea9)的查询插入到MySQL表中,比如执行这个命令:INSERT INTO tbl1 (text) VALUES ("fiancé")。
我的查询是用unicode格式的,但当我调用_mysq.connect(...).query(query)时,出现了一个错误:UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position X: ordinal not in range(128)。
显然,调用query时会把unicode字符串转换成ASCII格式,但问题是为什么会这样?我的数据库是utf8格式的,连接时也设置了use_unicode=True和charset='utf8'。难道_mysq或MySQLdb根本不支持unicode?我是不是漏掉了什么?
谢谢!
1 个回答
0
我知道这不是直接回答你的问题,但你为什么不使用预处理语句呢?这样做有两个好处:可能会解决你的问题,而且几乎可以肯定会修复你可能存在的SQL注入漏洞。
如果你不打算这样做,你确定你的字符串是Unicode吗?如果你只是简单地在Python 2.7中使用字符串,它可能会被强制转换成ASCII字符串。