我在服務器上使用python與mySQL進行通信。如果一個非ASCII字符的字符串被賦予python傳遞到mySQL表字段,我從服務器得到這個錯誤。如何將python中的utf-8字符保存到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字符
任何幫助,將不勝感激...
你能給我一個關於如何實現這個函數的例子嗎?如何擺脫%s並用.encode()替換它...?對不起,我是新手... – DKean
MySQL將數據返回給客戶端的編碼將取決於['character_set_results']的當前值(http://dev.mysql.com/doc/en /服務器系統變量。html#sysvar_character_set_results)會話變量:通常必須在連接到MySQL時指定所需的字符集,或者使用後面的SET NAMES命令(我不知道這裏使用的Python連接器是否可以處理這個問題..? )。 – eggyal
這不太正確:'u'%s'%'a''返回unicode。 -1沒有提及他不應該使用字符串格式來生成SQL表達式。 – schlamar