你可以尝试使用HttpServerUtility.UrlEncode代替。在Microsoft.JScript.GlobalObject.escape状态,它不是inteded
微软文档,直接从您的代码中使用。
编辑:
正如我在评论中说:这两种方法不同的编码和预计的Request.QueryString通过HttpServerUtility.UrlEncode使用的编码,因为它内部使用HttpUtility.UrlDecode。
(HttpServerUtility.UrlEncode实际使用HttpUtility.UrlEncode内部。)
你可以很容易地看到这两种方法之间的差异。
创建一个新的ASP.NET Web应用程序,添加到Microsoft.JScript程序的引用,然后添加以下代码:
protected void Page_Load(object sender, EventArgs e)
{
var msEncode = Microsoft.JScript.GlobalObject.escape("áíóú");
var httpEncode = Server.UrlEncode("áíóú");
if (Request.QueryString["a"] == null)
{
var url = "/default.aspx?a=" + msEncode + "&b=" + httpEncode;
Response.Redirect(url);
}
else
{
Response.Write(msEncode + "<br />");
Response.Write(httpEncode + "<br /><br />");
Response.Write(Request.QueryString["a"] + "<br />");
Response.Write(Request.QueryString["b"]);
}
}
结果应该是:
%E1%ED%F3%FA
%c3%a1%c3%ad%c3%b3%c3%ba
����
áíóú
会发生什么事,当你做字符串badDecode =的Request.QueryString [ “一个”]。的ToString();? ToString()是语言环境特定的线程,有时可以做魔术。 – 2009-09-17 23:28:42