【问题标题】:How to encode Cyrillic characters in JSON如何在 JSON 中编码西里尔字符
【发布时间】:2016-10-15 01:50:52
【问题描述】:

我想读取一个包含西里尔符号的 JSON 文件。

西里尔符号表示为\u123

Python 将它们转换为 '\\u123' 而不是西里尔符号。

例如,字符串"\u0420\u0435\u0433\u0438\u043e\u043d"应该变成"Регион",但变成"\\u0420\\u0435\\u0433\\u0438\\u043e\\u043d"

encode() 只是让字符串看起来像u"..." 或添加一个新的\

如何将"\u0420\u0435\u0433\u0438\u043e\u043d" 转换为"Регион"

【问题讨论】:

  • 你能澄清一下吗?这些文件正确的 JSON。
  • json str:"\u0420\u0435\u0433\u0438\u043e\u043d";所需:"Регион";获取:"\\u0420\\u0435\\u0433\\u0438\\u043e\\u043d"
  • 反序列化 JSON 之后?

标签: python-3.x unicode utf-8


【解决方案1】:

如果您希望json 输出包含非ASCII 字符的字符串,则需要传递ensure_ascii=False,然后再手动编码。

【讨论】:

    【解决方案2】:

    只需使用json 模块。

    import json
    
    s = "\u0420\u0435\u0433\u0438\u043e\u043d"
    
    # Generate a json file.
    with open('test.json','w',encoding='ascii') as f:
        json.dump(s,f)
    
    # Reading it directly
    with open('test.json') as f:
        print(f.read())
    
    # Reading with the json module
    with open('test.json',encoding='ascii') as f:
        data = json.load(f)
    print(data)
    

    输出:

    "\u0420\u0435\u0433\u0438\u043e\u043d"
    Регион
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多