【问题标题】:Coding and encoding in pythonpython中的编码和编码
【发布时间】:2015-06-23 19:02:16
【问题描述】:

我有一个file.json,我以这种方式在python中加载:

fd = open('originalfile.json' 'r', encoding='utf8')

然后我做了一些修改,然后我又用这种方式写了一个新文件

with open("newfile.json", "w", encoding="utf-8") as outfile:
    outfile.write('[\n')
    for i in result:
        json.dump(i, outfile, indent=8)
        outfile.write(',\n')
    outfile.write(']')

但在我的 originalfile.json 中,我有西班牙语文本,例如“Baterías”,当我编写 newfile.json 时,这发生了“Bater\u00edas”我怎样才能以正常方式编写?

【问题讨论】:

  • 这是正常的方式。如果您希望它具有未转义的 UTF-8,请使用 ensure_ascii=False。
  • 你能解释一下吗?
  • json.dump(i, outfile, ensure_ascii=False, indent=8)
  • 另外,你为什么关心你有哪一个?根据JSON specification,两者都是完全相同的字符串的表示。 JS、Python 等中的标准库,以及大多数(如果不是全部)没有内置 JSON 的语言的流行第三方库,都会对它们一视同仁。

标签: python json python-3.x utf-8 ascii


【解决方案1】:

只需将 Javier 的评论形式化为答案,以便其他人更容易找到。您需要将ensure_ascii 参数指定给json.dump

with open("newfile.json", "w", encoding="utf-8") as outfile:
    outfile.write('[\n')
    for i in result:
        json.dump(i, outfile, indent=8, ensure_ascii=False)
        outfile.write(',\n')
    outfile.write(']')

参考:https://docs.python.org/2/library/json.html#json.dump

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2017-12-25
    • 2016-01-13
    • 2012-01-12
    • 2021-09-02
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多