首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IPv6在请求参数中编码

IPv6在请求参数中编码
EN

Stack Overflow用户
提问于 2013-01-28 16:07:15
回答 3查看 891关注 0票数 1

我的REST资源(使用Jersey)使用QueryParam接收IPv6地址。

当接收到的地址值在资源中,它的一些字符是编码的,不知道用哪种算法。

例如,地址: fe80::bce8:a33e:2c56:d48a%13

如下所示:

在调试中,它看起来像fe80::bce8:a33e:2c56:d48a\u00

但打印时: fe80::bce8:a33e:2c56:d48a

我知道'\u00‘被翻译成空格,但是为什么会发生这种情况呢?我该如何克服这个问题呢?有没有办法解码它?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-29 17:42:48

根据RFC2396

代码语言:javascript
运行
复制
  Because the percent "%" character always has the reserved purpose of
  being the escape indicator, it must be escaped as "%25" in order to
  be used as data within a URI.

Jersey不可能理解这是否是保留字符。因此,在您的情况下,我认为您应该转义查询参数中的保留字符,然后它应该会像预期的那样工作:

代码语言:javascript
运行
复制
[fe80::bce8:a33e:2c56:d48a%2513]
票数 1
EN

Stack Overflow用户

发布于 2013-01-28 16:12:40

IPv6地址由八个带有七个分隔符的四位十六进制字符组成

因此,您需要独立地将十六进制字符转换为整数。

票数 0
EN

Stack Overflow用户

发布于 2013-01-28 19:03:18

原因之一似乎是您使用了本地链路地址(以fe80:开头的地址)。因为每个链接都有这些地址,所以地址需要包括您所指的链接的规范。这是您看到的%13部分。如果该字符串被解析为URL编码字符串,则%13将成为DC3控制代码(十六进制数为0x13)。

我不知道QueryParam,但这似乎是个bug。IP地址不是URL编码的,所以它不应该尝试解码它们...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14557880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档