本文目錄一覽:
- 1、python一行式解析json怎麼避免中文轉化為unicode編碼
- 2、【json.tool】關於python -m json.tool中文亂碼問題的處理
- 3、為什麼python運行json會提示JsonDecodeError?
- 4、python中json.loads()為什麼都變成unicode了?加了encoding=’utf-8’也沒用。我希望得到utf8的k-v,怎麼做
python一行式解析json怎麼避免中文轉化為unicode編碼
比如有一個json文件test.json,內容為:
{“one”:{“two”:”中文”}}
想要分層次的查看,於是:
cat test.json | python3 -m json.tool
然後輸出為:
{ “one”: { “two”: “\u4e2d\u6587”
}
}
然而中文已經轉換成了unicode編碼,如何避免這種轉換?
必須轉!
json是用於交換數據的,Unicode等 多位元組字元 會在傳輸過程中出錯。
“\u4e2d\u6587” ,嚴格的說,這不是utf格式編碼,而是 unicode轉義。
更新
用repr()保存json對象
import json j = json.loads(‘{“one”:{“two”:”中文”}}’) print(j)
{‘one’: {‘two’: ‘中文’}} j[‘one’][‘two’]’中文’ d =json.dumps(j) print(d)
{“one”: {“two”: “\u4e2d\u6587”}} r = repr(j) print(r)
{‘one’: {‘two’: ‘中文’}} with open(‘test.json’,’w’) as w:
w.write(r)
【json.tool】關於python -m json.tool中文亂碼問題的處理
python一行式解析json怎麼避免中文轉化為unicode編碼?
在以 json 為數據傳輸格式的 RESTful 介面非常流行。為調試這樣的介面,一個常用的辦法是使用 curl 命令:
curl
對於返回的 json 字元串,一般在服務端不加處理的情況下,都是沒有任何 ‘\t’ 和 ‘\n’ 的。
為了方便查看,在 bash 上可以簡單地對它進行格式化:
curl | python -m json.tool
當然這要求機器上安裝了 python,其實也就是利用了 json.tool 這個程序。
然而有時候還有一個問題,就是若返回的 json 字元串中包含中文,那麼這樣列印出來之後,中文會變成以 \u 開頭的轉義形式,從而讓程序員無法直接觀察到中文的內容,這並非是一個 bug,而是 json 本身的標準,它要求 json 的內容都是 ascii 編碼的,標準的 json 編碼器和解碼器都會遵循這一點。
# vim /usr/lib64/python2.7/json/tool.py
# curl -s -X POST -H ‘cache-control: no-cache’ | python -m json.tool
python -m json.tool中文亂碼問題
python -m json.tool 中文亂碼 Format JSON with python
python -m json.tool to output Chinese
python -m json.tool to output Chinese
Saving utf-8 texts with json.dumps as UTF8, not as \u escape sequence
為什麼python運行json會提示JsonDecodeError?
是編碼的問題
按Ctrl+c複製你寫的代碼,新建一個文檔,再粘貼,不要設置編碼,再運行,就OK了
或者將編碼設成GBK
python中json.loads()為什麼都變成unicode了?加了encoding=’utf-8’也沒用。我希望得到utf8的k-v,怎麼做
json裡面的字元串都是unicode(見),所以在dd中不可能出現utf-8的kv。loads函數的參數encoding是指定字元串j_str的編碼。將字元串j_str讀到dd時,會按這個編碼進行解碼成unicode。
dd = json.loads(j_str, encoding=’utf-8′) #dd中的字元串都是unicode
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/156931.html