開発環境
- システム:ubuntu18.04
- エンコードシステム:$ LANG = EN_US.UTF-8
- Pythonインタプリタのバージョン:Pythonの3.6.7
文字化けサイト
使用json.dumps()JSONデータへのdict、中国はそれが第三者にデータを送信する場合、それはまた、ディスプレイは、符号化された形式、非常に硬いがUNICODE、対応するUnicodeの符号化された形式を表示します。(を利用することが、英語が相互作用することではなく、関連部署、住所、その他の情報のナンバープレートの番号がある不法中国人ああ...)
デモ:
param = {
"code": "0",
"message": "中文内容"
}
param1 = json.dumps(param, ensure_ascii=False)
param2 = json.dumps(param)
print(param1)
print(param2)
出力内容:
param1: {"code": "0", "message": "中文内容"}
param2: {"code": "0", "message": "\u4e2d\u6587\u5185\u5bb9"}
実際のUnicodeの16進表現で、文字化けしていません。
分析
:違いは、このパラメータensure_ascii = Falseを、方法ルックjson.dumpsソースは()であるということです
def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
...
# 如果 ensure_ascii 为false,则返回值可以包含非ascii值
If ``ensure_ascii`` is false, then the return value can contain non-ASCII
characters if they appear in strings contained in ``obj``. Otherwise, all
such characters are escaped in JSON strings.
...