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

Python 2.7 如何将含特殊字符的字符串转为URL所需的UTF-8编码字节

问题根因

Python 2.7 中存在两类字符串:不带u前缀的str是字节串,带u前缀的unicode是统一编码对象。你遇到的编码错误是因为urllib.quote()会直接对输入的字节串做百分号转义,而你拿到的动态输入字符串默认不是UTF-8编码,转义后自然不符合URL要求的UTF-8编码规则。

解决方法

你只需要对动态输入做两次编码转换即可:

  1. 先将动态输入的字节串按其原始编码解码为unicode对象
  2. 再将unicode对象编码为UTF-8字节串,传给urllib.quote()处理

示例代码

import urllib

# 模拟动态输入的字符串(和你示例中的输入一致)
user_input = 'code - Brasilândia'

# 第一步:将输入字节串解码为unicode,根据输入的实际原始编码替换下方的编码规则
# 常见编码可选:cp1252(Windows默认)、gbk(中文Windows默认)、utf-8、latin-1
unicode_input = user_input.decode('cp1252')

# 第二步:转成UTF-8字节串后做URL编码
url_safe_str = urllib.quote(unicode_input.encode('utf-8'))

print(url_safe_str)
# 输出:code%20-%20Brasil%C3%A2ndia,和要求的格式完全匹配

补充说明

如果不确定输入字符串的原始编码,可以先打印print(repr(user_input))查看字节序列,再匹配对应的编码规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:30:00