我正在寫一個Python腳本,它讀取推文並將它們插入到MySQL中。根據每條推文的屬性,我需要插入不同的字段。出於這個原因,我正在創建的查詢字符串的字段和值部分,因爲我去,使用Python字符串格式化爲方便:Python字符串格式化UnicodeEncodingError
values = """%s, %s, '%s','%s','%s','%s',%s,'%s','%s','%s'""" % (
url_id, tweet['from_user_id'], conn.escape_string(tweet['location']),
conn.escape_string(tweet['profile_image_url']),
tweet['created_at'], tweet['from_user'], tweet['id'],
conn.escape_string(tweet['text']),
conn.escape_string(tweet['iso_language_code']), conn.escape_string(tweet['source'])
)
當我這樣做與具有UTF8字符的鳴叫,不過,我得到這樣的錯誤:
values = """%s, %s, '%s','%s','%s','%s',%s,'%s','%s','%s'""" % (
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 117: ordinal not in range(128)
我認爲格式字符串(帶有所有的「%s的」 S)被解釋爲默認ASCII,而這與UTF-8字符衝突。我需要將所有內容保存在UTF-8中,因爲此代碼必須使用任何可能的語言。
那麼如何指定格式化字符串是UTF-8?我想我可以改變整個腳本的默認編碼,但是我使用的是Python 2.4,並且該版本中不存在sys.setdefaultencoding。現在,我只是不知道該怎麼做,或者即使這是正確的做法。
是的...這是一個['unicode',不是UTF-8](http://farmdev.com/talks/unicode/)。 – 2011-06-15 03:12:55
我希望python3很快成爲現狀...... Unicode FTW。順便說一句Py2.4是太老了 – JBernardo 2011-06-15 03:21:36
阿門到...我沒有選擇2.4。我工作的所有服務器仍然停留在它上面。 – 2011-06-15 03:23:30