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?我是不是漏掉了什么?
谢谢!
相关问题:
- 为什么subprocess.call只有在参数分开为数组时才对任何字符串有效?
- UnicodeDecodeError:'ascii' 编解码器无法解码位置0的字节0xc2:序数超出范围(128)
- Python中的MySQL:UnicodeEncodeError:'ascii
- 如何让SQLAlchemy正确将unicode省略号插入MySQL表中?
- python错误 codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap'编解码器无法编码字符
- 使用compile函数时出现UnicodeEncodeError
- Python 编码 UnicodeDecodeError
- Python编码问题(unicode)
1 个回答
0
我知道这不是直接回答你的问题,但你为什么不使用预处理语句呢?这样做有两个好处:可能会解决你的问题,而且几乎可以肯定会修复你可能存在的SQL注入漏洞。
如果你不打算这样做,你确定你的字符串是Unicode吗?如果你只是简单地在Python 2.7中使用字符串,它可能会被强制转换成ASCII字符串。