为了账号安全,请及时绑定邮箱和手机立即绑定

go URL 中的额外转义字符

go URL 中的额外转义字符

Go
呼唤远方 2021-09-27 10:46:07
我有以下代码片段:    u := *baseURL    u.User = nil     if q := strings.Index(path, "?"); q > 0 {             u.Path = path[:q]            u.RawQuery = path[q+1:]    } else {            u.Path = path    }       log.Printf(" url %v, u.String())我看到当 baseurl 设置为这样的http://localhost:9000/buckets/test%?bucket_uuid=7864b0dcdf0a578bd0012c70aef58aca 时,url 包似乎在 % 符号附近添加了一个额外的转义字符。例如,上述打印语句的输出如下:2015/03/25 12:02:49  url http://localhost:9000/pools/default/buckets/test%2525?bucket_uuid=7864b0dcdf0a578bd0012c70aef58aca这似乎仅在设置 URL 的 RawQuery 字段时发生。知道为什么会这样吗?我使用的是 1.3.3 版
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

URL 可能仅包含 ASCII 字符集的字符,但通常旨在包含/传输此 ASCII 集之外的字符。在这种情况下,必须将 URL 转换为有效的 ASCII 格式。

如果原始URL 包含允许集之外的字符,它们将被转义:它们被替换为'%'后跟两个十六进制数字。因此该字符'%'是特殊的,也必须进行转义(其转义形式也将以 开头'%',其十六进制代码为25)。

由于您的原始URL 包含字符'%',它将被替换为"%25"

回到你的例子:在你看到的打印表格中"%2525"。你可能会问为什么不只是"%25"

这是因为您的原始 url 包含转义形式的a '%',这意味着其原始形式包含转义序列。如果您将其用作/解释为原始输入,则将替换为which 后跟来自输入的 ,从而导致."%25"'%'"%25""25""%2525"


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 414 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信