中国の文字列を包装json.dumps()

開発環境

  1. システム:ubuntu18.04
  2. エンコードシステム:$ LANG = EN_US.UTF-8
  3. 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.
    
    ...


エンディング〜


おすすめ

転載: www.cnblogs.com/kaichenkai/p/11934761.html