Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET和Ajax:使用ISO-8859-1编码查询字符串参数_Asp.net_Javascript_Ajax_Character Encoding_Query String - Fatal编程技术网

ASP.NET和Ajax:使用ISO-8859-1编码查询字符串参数

ASP.NET和Ajax:使用ISO-8859-1编码查询字符串参数,asp.net,javascript,ajax,character-encoding,query-string,Asp.net,Javascript,Ajax,Character Encoding,Query String,这里还有一个问题需要您帮助我解决:我有一个ASP.NET网站,它使用AJAX异步调用am.ashx处理程序,传递查询字符串参数以从数据库获取一些信息 下面是一个如何工作的示例: 对处理程序进行异步调用的客户端Javascript代码段: /* Capture selected value from a DropDownBox */ var dropdown = document.getElementById(DropDownID); var selectedValue = dropdown.op

这里还有一个问题需要您帮助我解决:我有一个ASP.NET网站,它使用AJAX异步调用am.ashx处理程序,传递查询字符串参数以从数据库获取一些信息

下面是一个如何工作的示例:

对处理程序进行异步调用的客户端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);
当我第一次加载包含这个AJAX调用的webform时,它会将正确的查询字符串发送给我在VisualStudio中使用debug检查过的处理程序,比如param=Street Joseph Blíss。这是我想要的正确行为

问题是,当我再次加载该webform以及所有后续时间时,Blíss中的í字符在服务器端显示为í-。因为这是我试图在服务器端数据库访问脚本上选择的实体的密钥,所以它在第一次Web表单加载时不起作用

我尝试在客户端对查询字符串进行编码,并在服务器端对其进行解码,如下所示:

客户端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);

……但我运气不好,问题仍然存在。有什么帮助吗?

在进一步搜索之后,我发现了如何使用服务器端代码优化来解决问题。交易如下:

我必须修改.ashx处理程序来解析从查询字符串中获取的原始参数,并将其转换为UTF-8。下面是它的制作方法:

// original parameterized value with invalid characters
string paramQs = context.Request.QueryString["param"];
// correct parsed value from query string parameter
string param = Encoding.UTF8.GetString(Encoding.GetEncoding("iso8859-1").GetBytes(paramQs));

祝大家编码愉快

它不应该是iso-8859-1吗,如这里所述?