下面是另一个帮助我解决的问题:我有一个使用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