如何从python到mySQL保存utf8字符

2024-07-01 08:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在服务器上使用python与mySQL通信。如果一个非ascii字符的字符串被提供给python以传输到mySQL表字段中,我会从服务器上得到这个错误。在

UnicodeEncodeError: 'ascii' codec can't encode characters in position 251-256: ordinal not in range(128)

如何传递utf-8数据。我有这样的评论:

^{pr2}$

…包含在python主代码页以及所有代码页中。在

奇怪的是,我能够从mySQL中获取包含UTF-8字符的数据,它可以很好地传输到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字符出现在Comments字段中

任何帮助都将不胜感激。。。在


Tags: 数据字符串代码in服务器sqlasciimysql
3条回答

我想说的是这里有人帮了我,但不管我怎么努力,我还是没能让它走下去。。。不过,谢谢大家的努力。不管怎样,我从所有人身上都学到了一些东西。在

解决这个公认的难题的方法如下:
连接参数必须包括以下项目

... charset="utf8", use_unicode=True"

没有这些,你所做的一切都会成功,正如我的结论。但我是新手,别把我当回事。在

尽管如此,还是非常感谢你们的参与。。。。你们摇滚。在

丹尼斯

您的数据应该是Unicode,字符串格式(%s)正在强制它使用默认编码(ASCII)进行字符串类型。在

在Unicode字符串上使用.encode('utf-8'),就可以完成所有设置了。在

一个非常快速的解决方法是确保字符串以Unicode开头:

sql = u"INSERT..."

ie在字符串前面加一个u。在

但是,您应该而不是使用字符串格式将值插值到SQL语句中。您应该依靠MySQL适配器来完成这项工作,以确保您不受SQL注入的影响:

^{pr2}$

相关问题 更多 >

    热门问题