是療法任何內置在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