带有 unicode CODES 的文本在 Python 3.7 中无法正确显示

Text with unicode CODES not displaying correctly in Python 3.7

在花了几个小时检查与此相关的每个 Whosebug post 之后,我正在努力解决这本应该是一件非常简单的事情...

我有一个带有 unicode 代码(不是字符,代码)的文本文件,例如:

"Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito"

此字符串应显示为:

"Edward escribió la biografía de su autor favorito"

如果我像往常一样加载文件,打印加载文本时只会看到 unicode 字符串:

import io
chars = io.open(fb_json_path, encoding='utf-8').read().strip()

这将打印:"Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito"。去掉encoding参数也是一样

我想我需要告诉 Python 解释字符串中的代码并将它们显示为 utf-8 字符,但我不知道该怎么做。

提前致谢!

我认为输入因编码错误而出现乱码。

C3 93ó(LATIN CAPITAL LETTER O WITH ACUTE).

的 UTF-8 编码字节

运行 在 Python 3 控制台

>>> text = "Edward escribi\u00c3\u00b3 la biograf\u00c3\u00ada de su autor favorito"
>>> text.encode('cp1252').decode('utf8')
'Edward escribió la biografía de su autor favorito'

我们可以分两步完成:

首先,我们读取带有encoding='unicode_escape'的文件来转换所有的\uxxxx

然后,我们通过将其透明编码为字节对象(使用 latin-1 编解码器)将其转换为 utf-8,然后再次将其转换为文本,解码为 utf-8

with open('text.txt', encoding='unicode-escape') as f:
    text = f.read()
    print(text)
    #Edward escribió la biografía de su autor favorito

    # Now we convert it to utf-8
    text = text.encode('latin1').decode('utf8')
    print(text)
    # Edward escribió la biografía de su autor favorito