【发布时间】:2021-04-29 17:50:33
【问题描述】:
我正在从 API 检索用户名,我得到的值如下:
\u00e2\u0098\u0085Random Name\u00e2\u0098\u0085 <3
当我尝试打印出来时,我最终得到:
★Random Name★ <3
但它应该是:
★Random Name★ <3
\u00e2\u0098\u0085 似乎是 ★ 的构造函数,它看起来像 unicode 转义序列,但显然转换中出了点问题。
需要一些关于如何部分取消转义字符串的帮助。
编辑:
(更多细节)
我正在尝试创建一个不和谐的机器人,它会根据检索到的玩家信息定期更新角色。
上面的第一个值正是我从 API 中得到的,我无法改变它
★Random Name★ <3 是发送到服务器的消息。
我确定 discord 支持字符集,因为我可以直接粘贴用户名而不会出现问题
data = json.loads(response.text)用于解析和存储响应await message.channel.send(f"Name: {data['name']}")用于发送消息
send() 是discord.py 的一个函数部分,用于在特定通道中发送消息
【问题讨论】:
-
您正在查看从
latin-1解码的字节,而这些字节应该是utf-8。如果没有看到生成它的代码,就很难知道如何修复。 -
您能否向我们展示您用于“尝试转换”的代码,以便我们讨论如何更具体地修改该代码?
-
某些东西(API 或它的接口)坏了。 E2 98 85 是 Unicode 码位 U+2605 的 UTF-8 编码。您不应该在
str值中获取那些特定于编码的字节。 -
您的帖子本身可能实际上存在编码问题。我刚刚尝试修复格式,但revision history 说我也更改了数据,这是不正确的,但无论我尝试什么都无法修复它。为了解决这个问题,请提供minimal reproducible example,包括您的代码和实际输入数据(因为我们需要知道格式:字节、str 等)。你可以edit这个问题。顺便说一句,欢迎来到 SO!如果需要提示,请查看tour 和How to Ask。
-
我询问实际输入数据的原因是因为这不是字符串。字符串包含在引号中。如果将其粘贴到 Python 控制台中,则会得到
SyntaxError: unexpected character after line continuation character。尝试执行print(repr(x)),其中x是输入数据。