2010-09-06 21 views
0

我的問題不是太難,但真的很煩人。Asp.net通用處理程序編碼問題

我正在通過Ajax通過這種方式發送值給Generic Handler。

xmlHttpReq.open("GET", "AddMessage.ashx?" + (new Date().getTime()) +"&Message=" + Message,true); 

當消息包含I,C,O,G,U,I,他們正在尋找這樣的處理程序 在context.Request.RawURL I,C,O,G, ü,ı這些角色看起來應該如此。但是在context.Request.Url中,它們看起來像是 ,當我想要QueryString值時,它給了我 我該怎麼辦?

回答

2

幾件事情要檢查:

  1. web.config你設置UTF-8:

    <system.web> 
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 
        ... 
    </system.web> 
    
  2. 您已在HTML頁面適當的meta標籤:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    
  3. 全部你的.aspx.ascx.master,.ashx,...文件被保存爲帶有BOM的UTF-8在硬盤上。

  4. 您發送之前正確的URL編碼參數(使用encodeURIComponent法):

    xmlHttpReq.open(
        "GET", 
        "AddMessage.ashx?" + 
         (new Date().getTime()) + 
         "&Message=" + encodeURIComponent(Message), 
        true 
    ); 
    
+0

感謝您的快速回復。但它沒有幫助,我已經試過了。但我在這裏找到了答案。 http://stackoverflow.com/questions/1578398/asp-net-ajax-query-string-parameters-using-iso-8859-1-encoding – 2010-09-06 18:29:34

+0

通常,如果你執行我建議你的4個步驟,你將不需要從這個答案中建議的不同編碼轉換。 – 2010-09-06 18:32:27

0

我找到答案這個鏈接。 ASP.NET & Ajax: query string parameters using ISO-8859-1 encoding

// 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));