java对url参数编码_对URL中的参数编码和解码
有时,我们希望点击页⾯中的链接跳转其他页⾯,并且以get的⽅式传递⼀些参数。如果不对这些参数编码,可能会造成⼀些问题:
1. 参数中的空格可能会让你⽆法打开页⾯
2. 参数中的&符号会影响参数的解析
解决⽅法: 对链接中的参数编码,在请求的页⾯⾥先解析出参数,然后解码
具体做法:
1. ⽤urlencode函数对链接中的参数值
编码
$url = "www.baidu?firstname=" . rawurlencode($firstname);
此函数返回字符串,此字符串中除了 -_.
之外的所有⾮字母数字字符都将被替换成百分号(%
)后跟两位⼗六进
制数, 空格则编码为加号(+
)。此编码与 WWW 表单 POST 数据的编码⽅式是⼀样的,同时与 application/x-
url编码处理www-form-urlencoded
的媒体类型编码⽅式⼀样。由于历史原因,此编码在将空格编码为加号(+)⽅⾯与
RFC1738 编码(参见 rawurlencode()
)不同。
rawurlencode与urlcode⼏乎完全相同,除了将空格也编码成百分号(%
)后跟两位⼗六进制数的形式。⾄
此,最好⽤rawurlencode。
$url = "www.baidu?firstname=" . rawurlencode($firstname);
2. 如果有多个参数的话,我们会⽤到&最为参数之间的分隔符。但是,如果参数值包含&符号,就可能造成参数解析错
误。 此时可以
$query_string = "?firstname=" . rawurlencode($firstname) . "&lastname=" . rawurlencode($lastname);
$url = "www.baidu" . htmlentities($query_string);
或者直接将&写成 &;
3. 在被请求的页⾯⾥使⽤urlencode或者rawurldecode解码:
$firstname = rawurldecode($_GET['firstname']);
Note(for myself):
1. 在涉及到编解码的问题是,只要保证⽤的字符集相同,就不会出现乱码的问题。
2. htmlentities vs html_entity_decode, htmlspecialchars vs htmlspecialchars_decode
3. htmlentities与htmlspecialchars的区别。
分享到:
2011-03-02 17:50浏览 1262
评论
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论