下面是另一個幫助我解決的問題:我有一個使用AJAX(異步)調用的ASP.NET網站,它處理的是.ashx
處理程序, 查詢字符串參數從數據庫中獲取一些信息。ASP.NET&Ajax:使用ISO-8859-1編碼查詢字符串參數
這裏是它如何工作的例子:
客戶端(JavaScript)的代碼片段,使得給處理程序的異步調用:
/* Capture selected value from a DropDownBox */
var dropdown = document.getElementById(DropDownID);
var selectedValue = dropdown.options[dropdown.selectedIndex].value;
/* Make the call to the handler */
var url = "MyHandler.ashx?param=" + selectedValue;
var ajaxObj = new Ajax();
ajaxObj.doRequest(url, MyCallback, args, connectionFailed);
當我加載webform
(包含此AJAX調用),它將正確的查詢字符串發送給處理程序(我在Visual Studio中使用調試進行了檢查),如param = Street Joseph Blíss
。這是我想要的正確行爲。
的事情是,當我加載webform
再(和所有後續倍),從「幸福」是í
字符出現在服務器端爲Ã-
。由於這是我試圖在服務器端數據庫訪問腳本中選擇的實體的關鍵,因此它在第一個webform
加載時不起作用。
我試過客戶端編碼查詢字符串和服務器端對其進行解碼,使用這樣的事情:
客戶端(JavaScript)的:
var encodedParam = encodeURIComponent(selectedValue);
/* Make the call to the handler */
var url = "MyHandler.ashx?param=" + encodedParam ;
服務器端(ASP.NET,C#):
string encodedParam = context.Request.QueryString["param"];
string value = HttpUtility.UrlDecode(encodedParam, Encoding.ASCII);
...但我沒有運氣,問題依然存在。任何幫助?
不應該是「iso-8859-1」,如此處所述? http://msdn.microsoft.com/en-us/library/system.text.encoding.webname.aspx – Ramunas 2010-10-20 08:03:05