包含pythonjsonunicode的詞條

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:58
下一篇 2024-11-18 01:58

相關推薦

發表回復

登錄後才能評論