12

谁能建议如何处理以下网址,因为 strLocation 的参数值具有特殊字符?提前致谢

http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId=122379069&strLocation=!@#$%^&*()_+&async=true&newAccID=112
4

2 回答 2

9

使用URLEncoder使用特殊字符对 URL 字符串进行编码。对字符串进行编码时,适用以下规则:

  • 字母数字字符“a”到“z”、“A”到“Z”和“0”到“9”保持不变。
  • 特殊字符“.”、“-”、“*”和“_”保持不变。
  • 空格字符“”转换为加号“+”。
  • 所有其他字符都是不安全的,并且首先使用某种编码方案将其转换为一个或多个字节。然后每个字节
    由 3 个字符的字符串“%xy”表示,其中 xy 是字节的两位
    十六进制表示。推荐使用的编码
    方案是 UTF-8。但是,出于兼容性原因,如果
    未指定编码,
    则使用平台的默认编码。

例如,使用 UTF-8 作为编码方案,字符串The string ü@foo-bar将被转换为,The+string+%C3%BC%40foo-bar因为在 UTF-8 中,字符 ü 被编码为两个字节 C3(十六进制)和 BC(十六进制),而字符 @ 被编码为一个字节 40 (十六进制)。

于 2013-10-22T10:45:58.920 回答
6

使用URLEncoder .encode()

String url="http://localhost:8080/safp/contacts/FirmAddress.do?btnAction=FirmAddress&firmId="+URLEncoder.encode("122379069","UTF-8")+"&strLocation="+URLEncoder.encode("!@#$%^&*()_+","UTF-8")+"&async=true&newAccID=112";

注意:不要encode使用整个 url,因为它也会对//from进行编码http://

于 2013-10-22T10:48:48.853 回答