我有一個包含非ascii字符的unicode對象userId
。我想引用這個字符串使用從xml.sax.saxutils的功能,使用它作爲一個XML屬性:無法在Python中引用unicode字符串
quoteattr(userId)
這給了我這個錯誤:
'ascii' codec can't encode character u'\xa0'
我想我已閱讀全部在網絡上的python unicode信息,包括https://docs.python.org/2/howto/unicode.html#the-unicode-type
但我仍然不明白問題是什麼。我已經有一個unicode對象。我不關心編碼。編碼是當我想從unicode轉換爲字節數組時,反之亦然。從來沒有在我的代碼中,我正在處理原始字節數組。
基本上最大的問題是爲什麼要quoteattr
使用ASCII編碼來的東西,如果我給它一個的unicode對象,並期望統一對象回來?
我通過做userId.encode('ascii', 'ignore')
解決了這個問題,但這顯然拋棄了任何非ascii字符。
我怎樣才能得到我的unicode字符串引用?
使用Google App Engine爲變量分配userId = ndb.StringProperty()
。
「適合我」 - 我無法重現您的問題。你使用的是什麼Python版本?有沒有機會你的userId不是內置的unicode對象(假設你在Python2.x中),而不是一些帶有自定義__unicode__方法的類? – jsbueno
@jsbueno這是可能的 - 我正在使用谷歌App Engine和userId分配如下:userId = ndb.StringProperty(),但是當我調用類型(userId)它說 –
kaalus