[英]How to correctly insert utf-8 characters into a MySQL table using python
[英]how to save utf-8 characters from python to mySQL
我在服务器上使用python与mySQL通信。 如果将具有非ascii字符的字符串提供给python,以传达到mySQL表字段中,则会从服务器收到此错误。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 251-256: ordinal not in range(128)
如何传递utf-8数据。 我有意见:
"# -*- coding: utf-8 -*-"
...包括在python主要代码页以及所有代码页中。
足够奇怪的是,我能够从包含UTF-8字符的mySQL中获取数据,并且可以很好地传输到JavaScript。
尝试传输数据的代码行如下:
sql = '''INSERT INTO clientMail (clientID,coID,MessageDate,TypeSent,Comments,FName)
VALUES(%s, %s, '%s', '%s', '%s', '%s') ''' % (clientID,companyID,currentDate,TypeSent,emailMessage,company_Name)
print "===>>>>>>>>>>>>>",sql
UTF-8字符出现在“注释”字段中
任何帮助,将不胜感激...
一个快速的解决方法应该是确保您的字符串以Unicode开头:
sql = u"INSERT..."
即在字符串前面加上u
。
但是,你不应该使用字符串格式化到值插值到SQL语句。 您应该依靠MySQL适配器为您执行此操作,以确保您免受SQL注入的侵害:
sql = u"INSERT... VALUES (%s, %s..)"
cursor.execute(sql, (clientID, companyID...,))
我想说的是,有人在这里提供了帮助,但是无论我多么努力,我都无法做到……不过,谢谢大家的努力。 无论如何,我学到了一些东西。
解决这个公认的难题的方法如下:
连接参数必须包括以下各项
... charset="utf8", use_unicode=True"
正如我所得出的结论,没有这些,您将无法工作。 但是我是新手,所以不要太在意我。
但是,非常感谢大家的参与。
丹尼斯
您的数据应为Unicode,字符串格式(%s)会强制使用默认编码(ASCII)将其设置为字符串类型。
在您的Unicode字符串上使用.encode('utf-8'),您将大功告成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.