2014-06-05 54 views
0

我有一個字段從數據庫中獲取,其中包含字符串與這部分?Ã?n,並得到這個我得到錯誤:UnicodeEncodeError:'ascii'編解碼器無法對數據庫中的字符進行編碼

"UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-15: ordinal not in range(128)"

我搜索這個錯誤,和其他人有問題,由於它開始像這樣u'\xa0等,但在我的情況,我認爲它是由於特殊字符,統一碼。我不能在數據庫中進行更改,因爲它不在我的訪問權下。我可以訪問它。

的代碼是在這裏:(實際上它調用外部URL)

req = urllib2.Request(url) 
req.add_header("Content-type", "application/json") 
res = urllib2.urlopen(req,timeout = 50)   #50 secs timeout 
clientid = res.read() 
result = json.loads(clientid) 

然後我使用結果變量,得到上述串,我就在這行錯誤:

updateString +="name='"+str(result['product_name'])+"', " 
+1

代碼在哪裏? – timgeb

+0

我已添加代碼 –

+0

顯示代碼,其中「使用結果變量...並獲取錯誤」 –

回答

2

在將數據插入數據庫之前,您需要找到用於數據的編碼。我們假設它是UTF-8,因爲這是最常見的。

在這種情況下,您將需要UTF-8解碼而不是ascii解碼。你沒有提供任何代碼,所以我假設你有"data".decode()。試試"data".decode("utf-8"),如果你的數據是使用這種編碼進行編碼的,它就會起作用。

+0

我在更新中添加了代碼,請看看,謝謝 –

+0

我試過了你上面提到的解決方案,這次給出了一個不同的錯誤即 s = obj ['product_name']。decode(「utf8」) 解碼文件「/usr/lib/python2.7/encodings/utf_8.py」,第16行 return codecs.utf_8_decode(input,errors ,True) UnicodeEncodeError:'ascii'編解碼器無法對位置12-15中的字符進行編碼:序號不在範圍內(128) –

+0

因此它在json.loads上崩潰?還是有另一個地方? –

1

所以這聽起來像是字符串已經是unicode然後。因此刪除該行上的str()unicode函數。

+0

謝謝你這麼多時間,現在就解決了 –

相關問題