json資料的中文顯示問題 python

2021-07-02 17:48:32 字數 1983 閱讀 6976

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...