本文目录一览:
- 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