Как в ASP.NET прочитать значение параметра url на русском языке?
Например http://site.com?action=add&name=Вася вместо имени в QueryString какие то иероглифы. Программирую много лет в ASP.NET столкнулся с этой проблемой впервые и очень удивился... Казалось бы задача банальная, но решения я пока не нашел. Временно запихнул параметры в POST.
У Вас имеются проблеммы с кодировкой - это раз.
Два - для превращения в язык оригинала, как указано в топике нужно использовать обратную функцию: Uri.UnescapeDataString.
Обратите внимание, что в Вашем ajax запросе приведение кодировки не наблюдается. То есть проблемма не на стороне сервера, она на стороне клиента. Для решения проблеммы мало указать кодировку (хотя даже этого вы не делаете, возможно Вам везет и она по умолчанию utf-8. Необходимо так же провести конвертацию языка в escape строку с помощью функции: javascript.ru/encodeURI.
Прошу так же обратить внимание на то, что хоть браузер и показывает русский язык в строке запроса, это совершенно не значит, что он отправляет запрос адреса на русском языке.
Павел Елизарьев: А причем здесь мой ajax возмите этот урл, оставьте его в строку браузера и нажмите энтер. Кто будет делать преобразования кодировки в данном случае? Браузеры его делают, но прочитать это на стороне asp.net не получается. Вы бы все же создали бы не консольное приложение, а пустой веб проект и посмотрели бы что проблема всетаки имеется.
MilkyCoder: Пожалуйста, по адресу https://gist.github.com/Ph47/df12b939ff104ce0b943 размещен код хэндлера, который добавлен в абсолютно пустой веб проект. По запросу localhost:46986/Handler.ashx?%D1%82%D0%B5%D1%81%D1... хэндлер выдает "/Handler.ashx?тест русского языка", и поступает правильно. А вот Ваш ajax неверный, вместо строки "main.ashx?action=directorAddManager&name=Кузя" должно быть что-то вроде "main.ashx?action=directorAddManager&name=%D0%9A%D1%83%D0%B7%D1%8F".