UTF8解码在python中不解码特殊字符

2024-09-29 18:53:39 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有以下来自API的数据(摘要)

"Product" : "T\u00e1bua 21X40"

我使用以下代码对数据字节进行解码:

var = json.loads(cleanhtml(str(json.dumps(response.content.decode('utf-8')))))

cleanhtml是我创建的一个正则表达式函数,用于从返回的数据中删除html标记(它工作正常)。尽管如此,decode(utf-8)并没有删除像\u00e1这样的字符。我的预期产出是:

"Product" : "Tábua 21X40"

我尝试过使用replace("\\u00e1", "á"),但没有成功。我如何替换这种类型的角色,这是什么类型的角色


Tags: 数据代码apijson角色类型字节var
3条回答

这是什么类型的角色

这里

"Product" : "T\u00e1bua 21X40"

您可能会观察到^{} escape sequence,它后面是4个十六进制数字:00e1,请注意,这是相同字符的不同表示法,因此

print("\u00e1" == "á")

输出

True

\u00e1是显示Python字符串内容时表示á字符的另一种方式

如果打开Python交互式会话并运行print({"Product" : "T\u00e1bua 21X40"}),您将看到{'Product': 'Tábua 21X40'}的输出。\u00e1在字符串中不作为这些单独的字符存在

\u转义序列表示以下数字指定了Unicode字符

试图用á替换\u00e1不会有任何效果,因为它已经是这样了。此外,replace("\\u00e1", "á")正试图替换斜杠、u等的单个字符,如前所述,它们实际上不以这种方式存在于字符串中

如果您进一步解释遇到的问题,我们可能会提供更多帮助,但目前听起来字符串的内容正确,但显示方式与您预期的不同

这些类型的字符称为字符实体。有不同类型的实体,这是JSON实体。要进行演示,请输入字符串here,然后单击unescape。 对于您的问题,如果您使用的是python,那么您可以通过导入json模块来解决这个问题。然后你必须按如下方式解码它

import json

string = json.loads('"T\u00e1bua 21X40"')
print(string)

相关问题 更多 >

    热门问题