这篇文章与我的问题相同Python 中的 MySQL:UnicodeEncodeError:'ascii'这只是为了澄清事情。
我试图将字符串保存到 MySQL 数据库,但出现错误:
文件“.smart.py”,第 51 行,位于
(数字、文本、'智能'、'u')
UnicodeDecodeError:“ascii”编解码器无法在位置解码字节 0xc2
25:序号不在范围内(128)
并且字符串保存在m['文本']
拉拉*=#&%@_?!:;-'"/()¥¡¿
这是代码片段
risk = m['Text']
msg = risk.encode('utf8')
text = db.escape_string(msg)
sql = "INSERT INTO posts(nmbr, \
msg, tel, sts) \
VALUES ('%s', '%s', '%s', '%s')" % \
(number, text, 'smart', 'u')
如果我尝试注释掉 SQL 查询并输入打印文本它会打印出 Lala*=#&%@_?!:;-'"/()¥¡¿
仅在处理 SQL 时才会遇到该错误。
MySQL编码设置为utf8_unicode_ci。 (或者我应该改变这个?)
Thanks.
添加这些参数MySQLdb.connect(..., use_unicode=1,charset="utf8")
.
创建一个光标
cur = db.cursor()
然后像这样执行:
risk = m['Text']
sql = """INSERT INTO posts(nmbr, msg, tel, sts) \
VALUES (%s, %s, %s, %s)"""
values = (number, risk, 'smart', 'u')
cur.execute(sql,values) #use comma to separate sql and values, this will ensure values are escaped/sanitized
cur.commit()
现在你不需要这两行:
msg = risk.encode('utf8')
text = db.escape_string(msg)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)