崇高的text3不显示utf8字符,但其代码

问题描述

我正在处理一些德语文本数据。我试图将一些元数据保存到python中的JSON文件中。

这是元数据的样子(您可能会注意到,有ä,ö字符):

{'pages': ['kitchwitch.ch_posts.csv','Sujetbaizinbasel_posts.csv','Guggenmusik-Moore-Schränzer-149777592206118_posts.csv','zueundrichproductions_posts.csv','glueckshof_posts.csv','Lieberockt_posts.csv','Pfadi-Schöftle-699078857125683_posts.csv'...
with open('./gsw_fb_r1_Metadata.json','w',encoding='utf8' )as f:
    json.dump(Metadata,f)

但是当我用Sublime Text3打开它时,得到以下信息:

{"pages": ["kitchwitch.ch_posts.csv","Sujetbaizinbasel_posts.csv","Guggenmusik-Moore-Schra\u0308nzer-149777592206118_posts.csv","zueundrichproductions_posts.csv","glueckshof_posts.csv","Lieberockt_posts.csv","Pfadi-Sch\u00f6ftle-699078857125683_posts.csv",

因此,ö和ä不能正确显示。如何像在Python中一样正常显示它们?这个问题与Sublime Text或我有关吗?谢谢!

解决方法

那是有效的JSON。默认设置是仅使用ASCII和Unicode转义码写入数据。当您使用json.load()将JSON重新加载到Python中时,字符串将再次包含原始字符。

如果您希望JSON文本文件可读而不是使用转义码,则可以使用ensure_ascii=False

with open('./gsw_fb_r1_metadata.json','w',encoding='utf8' )as f:
    json.dump(metadata,f,ensure_ascii=False)

这会将数据以UTF-8格式写入文件,并在具有UTF-8功能的文本编辑器中可读。