在w3schools上访问此地址时,地址中的%28会自动解码为(在我按下Enter键加载页面时,在Firefox地址栏中。
http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G
但是,在访问此地址(结尾处的额外%)时,地址栏中的地址不会被重写。
http://www.w3schools.com/TAGS/html_form_submit.asp?text=%28Hello+G%
任何人都可以解释这种行为吗?它正在导致我正在处理的AJAX调用问题(当我从document.location.hash请求一个网页时,值编码字符被自动解码,因为我使用的是CodeIgniter,不允许解码的字符。
答案 0 :(得分:-1)
Firefox只解码有效地址,因此“text =%28Hello + G%”将保持不变(正确编码的“%”字符为“%25”)。
%28Hello+G - valid, decoded: (Hello G
%28Hello+G% - invalid: %28Hello+G%
%28Hello+G%25 - valid, decoded: (Hello G%
可能的解决方案:
使用url safe base64编码您的网址(http://www.php.net/manual/en/function.base64-encode.php#103849)而不是urlencode
在urlencoding