2016-08-08 88 views
0

我正在從JSON獲取來自API的請求(使用Python 3.5)以及當我試圖打印(或使用)JSON時, response.text,json.loads(...)或response.json(),我得到一個UnicodeEncodeError。「UnicodeEncodeError:'ascii'編解碼器無法編碼字符」在Python3中

print(response.text) 
UnicodeEncodeError: 'ascii' codec can't encode character '\xc5' in position 676: ordinal not in range(128) 

JSON中包含了字典與國家名稱的數組,其中一些包含特殊字符,如:(例如二進制數組中只有一個字典)

b'[{\n "name" : "\xc3\x85land Islands"\n}] 

我不知道爲什麼有一個編碼問題,並且爲什麼當請求檢測到UTF-8編碼時(甚至通過手動設置爲UTF-8不會改變任何內容),使用「ascii」。

編輯2:問題是Microsoft Visual Studio Code 1.4。它無法打印字符。

+0

的錯誤提示字符不能是*編碼* ascii - 這意味着問題不是讀取/解碼文本,而是將其編碼爲字節(打印時) – janbrohl

+0

[UnicodeEncodeError:'ascii'編解碼器無法在位置20編碼字符u'\ xa0'序號不在範圍內(128)](http://stackoverflow.com/questions/994259 4/unicodeencodeerror-ASCII的編解碼器斜面編碼字符-U-XA0-在位-20) –

回答

0

如果您的代碼在VS中運行,那麼這聽起來似乎是Python無法解決內置控制檯的編碼問題,所以默認爲ASCII。如果你試圖打印任何非ASCII,那麼Python會拋出一個錯誤,而不是打印不會顯示的文本。

您可以使用PYTHONIOENCODING環境變量強制Python的編碼。將其設置爲腳本的運行配置。

根據Visual Studio的控制檯上,你可能會逃脫:

PYTHONIOENCODING=utf-8 

,或者您可能需要使用一個典型的8位字符集,如:

PYTHONIOENCODING=windows-1252 
相關問題