簡體   English   中英

Python - unicode字符串的元組,編碼錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM