json資料的中文顯示問題 python
post請求資料時,響應的內容是json資料,但是返回的json資料中文顯示有問題,變成 \u***的形式。這是因為中文以 unicode 編碼了,而預設是以ascii解析的,中文不在ascii編碼中,所以無法顯示。這時候我們可以用 import json 然後呼叫json.loads() 和json.dumps()來使中文正確顯示。
具體怎麼做呢?用下面的**即可實現(data是中文不能正常顯示的json串,newjson是處理後中文正常顯示的字串)
import json
myjson=json.loads(data) #data是向 api請求的響應資料,data必須是字串型別的
newjson=json.dumps(myjson,ensure_ascii=false) #ensure_ascii=false 就不會用 ascii 編碼,中文就可以正常顯示了
print(newjson)
首先需要了解一下encoding與decoding
encoding:編碼,把python物件轉換成json字串
decoding:解碼,把json字串解碼轉換成python物件
1. json.loads() :把json字串解碼轉換成python物件
從上圖可以看到 json.loads()的引數說明。注意這裡的「s」應該是 乙個包含json 文件的「str」例項(也就是上面說的 data應該是字串)
2.json.dumps(): 把python物件轉換成json字串
從上圖可以看到 json.loads()的引數說明。注意這裡的"obj"應該是python物件,引數「ensure_ascii」預設值是true(這就是為什麼中文無法正常顯示的原因),所以我們要把這個引數的值設為false.
下面是我的**:(我用的是python3.4)
import json
import urllib.request
req = urllib.request.request(url,postdata,header) # 把url,postdata,header換成你自已的值
response=urllib .request .urlopen(req) #response是file-like的物件
data=response.read() #data是bytes 型別
data = ungzip(data) #ungzip是我自己寫的解壓函式
data=data.decode() #decode後,data從bytes型別轉換成str
#處理data的中文
myjson=json.loads(data) #data的type必須為str.
newjson=json.dumps(myjson,ensure_ascii=false)
print(newjson)
附上python中的json處理的官方文件:
另外:你可以通過help(json.dumps)檢視這個函式的有關引數資訊
通過 help(json.loads) 檢視該函式的引數資訊:
php返回json資料中文顯示的問題
當使用php自帶的json encode對資料進行編碼時,中文都會變成unicode,導致不可讀。如 對字串 廈門 進行json encode後,輸出的是 u53a6 u95e8 解決方法 1.str preg replace u 0 9a f ie iconv ucs 2 utf 8 pack h...
php返回json資料中文顯示的問題
json encode返回資料的中文顯示成類似 u5723 u8bde u8282 u5343解決方法 function notice ie iconv ucs 2be utf 8 pack h4 1 str windows return preg replace u 0 9a f ie iconv...
JSON返回的資料中文亂碼問題!!!
伺服器返回的是utf 8,jsp頁面上也是utf 8,資料庫也是utf 8怎麼就是亂碼呢!在網上天昏地暗地找了兩天總算有解決方案了 問題出在gethttpresponse 輸入流!in new bufferedreader new inputstreamreader connection.getin...