为什么文本编辑器将某些字符显示为 unicode 代码点



我正在用python抓取一个网站。网站文字为iso-8859-1。一旦我阅读了 HTML,我将文本转换为 utf-8,如下所示:

pageHTML = urllib.urlopen( url ).read()
pageHTML = pageHTML.decode('iso-8859-1').encode('utf8')

我对 HTML 进行一些处理,并将一些标记存储在数组中。然后我将数组作为 json 转储到文件中,如下所示:

with open(outputPath, 'w') as f:
    json.dump(tokens, f)

但是,当我使用文本编辑器打开转储的文件时,我没有看到真正的字符,但我看到 unicode 代码点如下:

"heiu00dfen"

应显示为"heißen"。

我的问题:

1-这是为什么?

2-如何解决?

文本编辑器是 Atom。但也在OS X上尝试了TextEdit。

json.dump的默认值是假定 ASCII 输出,这意味着任何非 ASCII Unicode 字符都使用 uxxxx 表示法表示。要更改此设置,请将ensure_ascii选项设置为 False 。使用dumps的一些示例:

>>> print json.dumps("foö")
"fou00f6"
>>> print json.dumps("foö", ensure_ascii=False)
"foö"

最新更新