我正在使用YUI io將數據發佈到我的服務器。我有一些問題,如æøå發送外國字符。如何使用YUI發送外部字符io(XMLHttpRequest)
第一種情況:一種形式被髮送到服務器
Y.io(url, {
method: 'POST',
form: {
id: 'myform',
useDisabled: true
}
});
這將發佈表單到服務器的內容。如果我有一個名爲「test1」的字段包含「å」,那麼在服務器上我會看到REQUEST_CONTENT =「test1 =%C3%A6%C3%B8%C3%A5」。這可以很容易地用urldecode功能,沒問題進行解碼,但是......
第二種情況:數據發佈是這樣的:
Y.io(uri, {
data : '{"test1":"æøå"}'),
method : "POST"
});
現在我看到這個在服務器REQUEST_CONTENT =「{」測試1 「:」 ├ª├©├Ñ 「}」。我怎樣才能解碼?爲什麼它會這樣發送?
我知道我可以在發送它之前使用encodeURIComponent()對字符串進行編碼。但是io請求實際上是Model Sync操作的一部分,所以我不直接調用io。我正在做這樣的事情:
Y.User = Y.Base.create('user', Y.Model, [Y.ModelSync.REST], {....});
var user = new Y.User();
user.set('test1', 'æøå');
user.save();
因此,每次設置/讀取屬性時編碼/解碼都沒有意義。
另外我試圖在請求頭中設置charset = utf-8,但是這並沒有改變任何東西。
編輯
我已經在Chrome中做了一些更多的調試,並請求與該行的代碼創建:
transaction.c.send(data);
transaction.c是XMLHttpRequest,並(使用Chrome調試器)我可以看到數據是「{」test1「:」「」 「當執行上面的代碼行時,顯示一個掛起的網絡條目(在chrome調試器的網絡選項卡下)。請求有效負載{顯示「測試1」:「├ª├©├Ñ」} 頭是:
Accept:application/json
Content-Type:application/json; charset=UTF-8
感謝您的回覆@juandopazo。不幸的是,我不使用PHP,而是使用Domino服務器。所以我沒有可用的json_decode。我已經多看了第二個選項。但我無法理解它。使用像這樣的字符串:Y.log(Y.JSON.stringify(Y.JSON.parse('{「test1」:「æøå」}')));不會編碼字符...另見我在編輯 –
呃!骨牌!到過那裏。我更新了我的答案,試圖更清楚「serialize」的作用。 – juandopazo
序列化似乎是做一些工作的好地方。我會試一試。謝謝您的幫助。 –