繁体   English   中英

如何将utf-8字符从python保存到mySQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM