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