python中的编码和编码

python中的编码和编码,python,json,python-3.x,utf-8,ascii,Python,Json,Python 3.x,Utf 8,Ascii,我有一个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, i

我有一个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,我如何才能以正常的方式书写?

只是将Javier的评论形式化,作为一个答案,以便于他人查找。您需要为json.dump指定sure_ascii参数:


参考:

这是正常的方式。如果你想让它有未转义的UTF-8,请使用确保ascii=False。你能解释一下怎么做吗?json.dumpi,outfile,确保ascii=False,indent=8都在这里:还有,你为什么关心你有哪一个?根据,这两个都是完全相同字符串的表示形式。JS、Python等中的标准库,以及大多数(如果不是所有的话)针对没有内置JSON的语言的流行第三方库,都将以相同的方式对待它们。
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(']')