OBS 对象链接里的加号,别当成表单空格

举报
yd_278665440 发表于 2026/10/25 18:18:22 2026/10/25
【摘要】 用 Python 对照 OBS 对象键中加号、空格与百分号的路径编码,避免表单解码和重复转码混用。

我今天整理 OBS 对象链接时,拿 logs/a+b 01.txt 在本地 Python 3.10.12 做了个编码对照。文件名同时带加号和空格,看着有点别扭,不过正好能把路径处理的问题放大。

from urllib.parse import quote, unquote, unquote_plus
key = "logs/a+b 01.txt"
path = quote(key, safe="/")
print(path)  # logs/a%2Bb%2001.txt
assert unquote(path) == key
print(unquote_plus(key))  # logs/a b 01.txt

unquote_plus 把原始路径里的加号变成了空格;它适合表单编码那套规则,不该直接拿来处理对象键。路径中的 + 本身不是空格,这一点容易顺手写错。

我还试了把 path 再 quote 一次,结果是 logs/a%252Bb%252001.txt,百分号也被编码了。排查链接时,我会把原始对象键和编码后的路径分开保存,不做反复转码。实际调用 OBS 仍交给 SDK 处理;尤其预签名链接,生成后别再手动编码整条 URL。

这只是本地字符串验证,没有操作真实桶,也没有验证 OBS 的签名算法。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。