是疗法任何内置在PHP函数POST串解码在PHP
przysi%25C4%2599gam%2520s解码%25C5%2582u%25C5%25BCy%25C4%2587
到
przysięgamsłużyć
?
是疗法任何内置在PHP函数POST串解码在PHP
przysi%25C4%2599gam%2520s解码%25C5%2582u%25C5%25BCy%25C4%2587
到
przysięgamsłużyć
?
urldecode - 解码URL编码字符串
但我认为,不会对多字节字符串工作。请参阅可能的解决方法的userland手册页面上的评论,也http://www.zend.com//code/codex.php?ozid=839&single=1
否定。 Urldecode不能很好地解码,因为它仅解码%##个字符。 – clops 2010-04-01 10:58:18
你有没有尝试过这样的:
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
编辑摘自:您的初始字符串被搞砸了。你有两次urlen代码吗?原因utf8_urldecode(utf8_urldecode($ encoded string))给出了正确的结果。
在我的机器上给出了'przysi%C4%99gam%20s%C5%82u%C5%BCy%C4%87'。 – Gordon 2010-04-01 11:05:55
我的猜测是你有urldecode和多字节字符的问题。 Urldecode只能解码8位字符,而你的字符串包含多字节字符。
检查urldecode manual page comments的某些解决方案。
确定,该程序生成这些字符串知道它在做什么?如果它是一个UTF-8 url编码的字符串,它应该读取'przysi%25%C4%25%99gam ...',也就是两个字节都用url编码。 – Boldewyn 2010-04-01 11:10:09