2012-10-22 44 views
1

我得到一個textarea值與jQuery和使用Ajax將其發佈到服務器。rawurldecode不解碼歐元符號

我使用escape(textarea.val())在jQuery中對URL進行編碼。

在我的PHP腳本中,我使用rawurldecode將其轉換回來。

這適用於我的鍵盤上除歐元符號(€)以外的每個字符。相反,它返回十六進制代碼(%u20AC)。

我不知道如何解決這個問題,據我所知我所有的字符集設置是爲了。

由於

回答

0

你的jQuery腳本不發送通過根據RFC3986數據。

%u20AC不是URL編碼。

+0

HTML轉義'€',** **不'%u20AC' –

+0

的確,謝謝 – CAMason

+0

我只花了幾個小時試圖做這個工作。我做的第一件事情之一是使用encodeURIComponent而不是逃逸,這是行不通的。現在我再次做了這件事,因爲我們的答案,它的工作原理!在做這項工作的那幾個小時裏,我一定做了一些事情。 謝謝! – bur

1

%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');; 
} 

來源:UTF-8 Encoding with internet explorer %u20AC to €

+0

感謝,我切換encodeURIComponent方法在我的Ajax請求:)現在它的正確編碼 – bur