你可以嘗試使用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