You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含\xhh转义的bytes转Unicode的正确方法?实例求助

正确转换双重编码的Bytes对象为Unicode字符串

这个问题的核心是你的bytes对象经历了双重编码,咱们一步步拆解解决:

解决步骤与代码

s = b'{"street":"Grossk\\xc3\\xb6lnstra\\xc3\\x9fe"}'

# 分步处理更清晰
# 1. 先解码unicode转义,得到包含utf-8字节对应的字符的字符串
temp_str = s.decode('unicode_escape')
# 2. 将字符串按latin-1编码回bytes(latin-1每个字符对应一个字节,不会丢失信息)
temp_bytes = temp_str.encode('latin-1')
# 3. 用utf-8解码得到最终正确的Unicode字符串
result = temp_bytes.decode('utf-8')

print(result)  # 输出:{"street": "Grosskölnstraße"}

也可以简化成一行代码:

result = s.decode('unicode_escape').encode('latin-1').decode('utf-8')

为什么之前的方法失效?

  • 直接用s.decode('utf8'):你的bytes里的\\xc3是两个ASCII字符(反斜杠+c3),不是真正的utf-8字节\xc3,所以解码后只会保留转义序列,无法解析出德语变音字符。
  • 直接用s.decode('unicode_escape'):它把\\xc3转换成了Unicode字符Ã(U+00C3),\\xb6转换成(U+00B6),跳过了utf-8解码的关键步骤,导致出现乱码。

内容的提问来源于stack exchange,提问作者user1406177

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:26:36