簡體   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