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

如何在Python中解码"%E3%83%9C"这类URL编码的UTF-8字符串?

解决URL百分号编码转UTF-8字符串的问题

你遇到的是**URL百分号编码(又称URL编码)**转可读字符串的问题,不用手动折腾正则替换,Python自带工具就能轻松搞定。

推荐解法:使用urllib.parse.unquote

这是最简洁可靠的原生方法,专门用于处理URL编码格式的字符串:

from urllib.parse import unquote

mystr = "%E3%83%9C%E3%83%89%E3%82%AB%E3%81%95%E3%82%93"
result = unquote(mystr)
print(result)  # 输出:ボドカさん

你的代码失效原因

你用正则把%替换成\x后,直接调用bytes(mystr, "utf-8")会把\x当成普通文本字符编码,最终生成的是带转义反斜杠的\\x,而非真正的字节值。如果非要手动处理字节转换,可以用以下方式:

mystr = "%E3%83%9C%E3%83%89%E3%82%AB%E3%81%95%E3%82%93"
# 拆分编码片段并转换为字节对象
byte_data = bytes.fromhex(''.join(mystr.split('%')[1:]))
result = byte_data.decode('utf-8')
print(result)  # 输出:ボドカさん

手动处理逻辑说明

  • mystr.split('%')[1:]将编码字符串拆分为['E3', '83', '9C', ...]形式的十六进制片段
  • ''.join()把片段拼接成连续的十六进制字符串
  • bytes.fromhex()将十六进制字符串转换为真实的字节对象(与你示例中的b'\xe3\x83\x9c...'完全一致)
  • 最后通过decode('utf-8')解码为可读的UTF-8字符串

两种方法中,unquote通用性更强,还能自动处理其他URL编码的特殊字符,优先推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:45:38