Проблема кодирования общего обработчика Asp.net - PullRequest
0 голосов
/ 06 сентября 2010

Моя проблема не слишком сложна, но действительно раздражает.

Я отправляю значения в Generic Handler через Ajax таким образом.

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

когда сообщение содержит İ, ç, ö, ğ, ü, ı они выглядят так же на обработчике ������� В контексте. Запрос. RawURL İ, ç, ö, ğ, ü, ı эти символы выглядят так, как должны.Но в context.Request.Url они выглядят как ������� и когда мне нужны значения QueryString, они дают мне ������� что я могу сделать?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Несколько вещей для проверки:

  1. В web.config вы установили UTF-8:

    <system.web>
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
        ...
    </system.web>
    
  2. ВыУ вас есть правильный метатег на вашей HTML-странице:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
  3. Все ваши .aspx, .ascx, .master, .ashx, ... файлы сохраненыкак UTF-8 с спецификацией на жестком диске.

  4. Перед отправкой необходимо правильно указать параметры кодирования URL (используя метод encodeURIComponent ):

    xmlHttpReq.open(
        "GET", 
        "AddMessage.ashx?" + 
            (new Date().getTime()) + 
            "&Message=" + encodeURIComponent(Message),
        true
    );
    
0 голосов
/ 06 сентября 2010

Я нашел ответ по этой ссылке. ASP.NET и Ajax: параметры строки запроса с использованием кодировки ISO-8859-1

// 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...