我得到一個textarea值與jQuery和使用Ajax將其發佈到服務器。rawurldecode不解碼歐元符號
我使用escape(textarea.val())在jQuery中對URL進行編碼。
在我的PHP腳本中,我使用rawurldecode將其轉換回來。
這適用於我的鍵盤上除歐元符號(€)以外的每個字符。相反,它返回十六進制代碼(%u20AC)。
我不知道如何解決這個問題,據我所知我所有的字符集設置是爲了。
由於
我得到一個textarea值與jQuery和使用Ajax將其發佈到服務器。rawurldecode不解碼歐元符號
我使用escape(textarea.val())在jQuery中對URL進行編碼。
在我的PHP腳本中,我使用rawurldecode將其轉換回來。
這適用於我的鍵盤上除歐元符號(€)以外的每個字符。相反,它返回十六進制代碼(%u20AC)。
我不知道如何解決這個問題,據我所知我所有的字符集設置是爲了。
由於
你的jQuery腳本不發送通過根據RFC3986數據。
%u20AC
不是URL編碼。
%u20AC
是Unicode編碼由JavaScript的escape()
函數生成UTF8用於服務器端處理€
數據。
標準PHP urldecode對付不了它,所以你需要使用擴展程序:
/**
* @param string $str unicode and ulrencoded string
* @return string decoded string
*/
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');;
}
感謝,我切換encodeURIComponent方法在我的Ajax請求:)現在它的正確編碼 – bur
HTML轉義'€',** **不'%u20AC' –
的確,謝謝 – CAMason
我只花了幾個小時試圖做這個工作。我做的第一件事情之一是使用encodeURIComponent而不是逃逸,這是行不通的。現在我再次做了這件事,因爲我們的答案,它的工作原理!在做這項工作的那幾個小時裏,我一定做了一些事情。 謝謝! – bur