如何解码 python3 中的文本?

How to decode a text in python3?

我有一个文本 Aur\xc3\xa9lien 并想用 python 3.8.

解码它

我尝试了以下方法

import codecs
s = "Aur\xc3\xa9lien"
codecs.decode(s, "urf-8")
codecs.decode(bytes(s), "urf-8")
codecs.decode(bytes(s, "utf-8"), "utf-8")

但其中 none 给出了正确的结果 Aurélien

如何正确操作?

并且没有基本的、通用的权威简单页面来描述 python 的所有这些编码吗?

首先找到字符串的编码,然后对其进行解码...为此,您需要通过在原始字符串的前面添加字母 'b' 来制作字节字符串。

试试这个:

import chardet

s = "Aur\xc3\xa9lien"
bs = b"Aur\xc3\xa9lien"

encoding = chardet.detect(bs)["encoding"]

str = s.encode(encoding).decode("utf-8")

print(str)

如果您正在从文件中读取文本,您可以使用 magic 库检测编码,请参见此处:

您已将 UTF-8 解码为 latin-1,因此解决方案是编码为 latin-1,然后解码为 UTF-8

s = "Aur\xc3\xa9lien"
s.encode('latin-1').decode('utf-8')
print(s.encode('latin-1').decode('utf-8'))

Output
Aurélien

您的字符串不是 Unicode 序列,因此您应该在其前面加上 b

import codecs
b = b"Aur\xc3\xa9lien"
b.decode('utf-8')

所以你有预期的:'Aurélien'

如果你想使用s,你应该使用mbcslatin-1mac_roman或任何8位编码。没关系。这样的 8 位编解码器可以正确获取字符串中的二进制字符(1 对 1 映射)。所以你得到一个字节数组(所以现在你可以使用这个答案的第一部分,所以你可以解码二进制字符串。