2010-02-01 83 views
4

我有一個頁面,將AJAX發送到服務器,並且數據通常是Unicode。使用Unicode的JQuery AJAX調用。正確的方法來POST Unicode數據?

這工作的大部分時間,但現在看來,有時它打破和我似乎無法在任何地方找到答案。我一直在使用encodeURI,但我不確定這是否正確。

下面的代碼的一個例子:

$.ajax({ 
     type: "POST", 
     url: "SomePage.php", 
     data: "val1=" + encodeURI(unicodeVariable) + "&presentation=" + encodeURI(someUnicodeVariable), 
     success: function(msg){ 

     } 
    });      

我猜發生了什麼事,有時是Unicode字符包括&是打碎它。

什麼是對編碼Unicode一個AJAX調用使用jQuery的正確方法是什麼?

謝謝。

回答

6

這裏有一個很好的link是比較所有的編碼方法。

最後,encodeURIComponent方法() 方法應該在大多數情況下 編碼 URI的單個部件時使用。該方法將編碼將通常 識別爲特殊字符的URI的 使許多部件可以包括 某些 字符。請注意,這種方法並沒有 編碼'字,因爲它是內部的URI一個 有效的字符。

encodeURIComponent方法()也編碼 「&」 符號:

encodeURI("&"); // "&" 
encodeURIComponent("&"); // "%26" 

您也可以直接轉換這一行:

data: "val1=" + encodeURI(unicodeVariable) + "&presentation=" + encodeURI(someUnicodeVariable), 

成一個對象:

data: { 
    val1: unicodeVariable, 
    presentation: someUnicodeVariable 
} 

而jQuery將自動讓sur數據使用encodeURIComponent()進行編碼。

+0

看起來改變成一個對象,並確保編碼設置爲UTF-8的伎倆。現在我需要做的是找出爲什麼mdash字符不能在MySQL中正確存儲。 – 2010-02-01 19:27:39

+0

@RyanSmith我意識到這是3年多前的事,但是你最終是否找出了這個問題?我正在處理非常相似的事情 – acjay 2013-06-24 20:06:11