PHP中的任何内置函数都可以解码
przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587
到
przysięgamsłużyć
答案 0 :(得分:2)
urldecode - 解码网址编码的字符串
但我认为这对多字节字符串不起作用。有关可能的用户态解决方法,请参阅手册页上的注释以及http://www.zend.com//code/codex.php?ozid=839&single=1
答案 1 :(得分:2)
我的猜测是你遇到了urldecode和多字节字符的问题。 Urldecode只能解码8位字符,而您的字符串包含多字节字符。
检查urldecode manual page comments以获取解决方案。
答案 2 :(得分:2)
好的,戈登和马诺斯,你们都是对的(而且都错了;)
这只是正常的'urldecode',但是应用两次
$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);
答案 3 :(得分:0)
你试过这个:
function utf8_urldecode($str) {
$str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');;
}
取自http://php.net/manual/en/function.urldecode.php
编辑:你的初始字符串搞砸了。你有两次urlencode吗?导致utf8_urldecode(utf8_urldecode($ encoded string))给出正确的结果。