[英]Python - tuple of unicode strings, encode error
我正在使用存儲過程從mysql數據庫中獲取一些行。
我使用非常基本的語法:
retarr = []
cursor.callproc("employee_get", (-1, -1, -1))
for res in cursor.stored_results():
retarr.append(res.fetchall())
cursor.close()
...
現在。 一些數據結果是unicode字符串。 我在我的數據庫中使用UTF-8編碼字符串。 我在連接中使用charset =“utf8”和use_unicode = True。
當我嘗試打印包含unicode字符的任何捕獲數據(整個數據元組)時,會出現問題。 喜歡:
for row in retarr[0]:
print(row)
它正確地打印出第一個捕獲的行。 但第一個沒有unicode角色。 然后是第二個,我得到的是一個着名的錯誤:UnicodeEncodeError:'ascii'編解碼器不能編碼位置19中的字符'\\ u0119':序號不在范圍內(128)。 有什么問題? 我相信我錯過了一些非常基本的東西。
我使用Python 3.3.2,標准的mysql連接器。 OSX。
要打印unicode對象,需要以某種方式對其進行編碼。 如果您的默認編碼是ASCII,則對於128個ASCII字符之外的任何內容都將失敗。 您可能需要指定編碼:
print(row.encode('utf-8'))
PYTHONIOENCODING環境變量存在問題。 當我在/etc/launchd.conf中設置它(我的文件系統中沒有文件)並重新啟動我的系統時,所有問題都消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.