powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перекодирование Request.Form
6 сообщений из 6, страница 1 из 1
Перекодирование Request.Form
    #37534230
noname-tier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, столкнулся со следующей проблемой:

Получаю постом инфу с сайта (кодировка win1251) и обрабатываю на странице (кодировка utf8) через Request.Form, проблема возникла при отправке русских символов, приходит "пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ".
Пробовал конвертить таким методом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Convert(Request.Form.ToString(), Encoding.GetEncoding(1251), Encoding.UTF8)));

public static string Convert(string value, Encoding src, Encoding trg)
        {
            var dec = src.GetDecoder();
            var ba = trg.GetBytes(value);
            var len = dec.GetCharCount(ba, 0, ba.Length);
            var ca = new char[len];
            dec.GetChars(ba, 0, ba.Length, ca, 0);
            return new string(ca);
        }

возвращает "%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd%ufffd+%ufffd%ufffd%ufffd%ufffd%ufffd".

Что делаю не так?
...
Рейтинг: 0 / 0
Перекодирование Request.Form
    #37537303
Фотография student-uni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рискну предположить что тебе при отправке чушь приходит, там смотреть надо. На приеме уже ничего не сделать.
Перекодировать "пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ" нет смысла.
Где оно в первый раз появлается ?

Пробовал:
Код: plaintext
1.
return Encoding.UTF8.GetString(Encoding.Default.GetBytes(value.ToCharArray()));
?
...
Рейтинг: 0 / 0
Перекодирование Request.Form
    #37541333
noname-tier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал так:
Код: plaintext
1.
2.
3.
 var bytes = new byte[request.TotalBytes];
            request.InputStream.Read(bytes, 0, request.TotalBytes);
var str=Encoding.GetEncoding(1251).GetString(bytes);
На выходе: "%c2%e8%f2%ea%ee%e2%f1%ea%e0%ff+%ce%eb%fc%e3%e0", насколько я понимаю это win кодировка, как ее перевести в utf8?
...
Рейтинг: 0 / 0
Перекодирование Request.Form
    #37548726
Фотография student-uni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
var str=Encoding.Default.GetString(bytes);

...
Рейтинг: 0 / 0
Перекодирование Request.Form
    #37549928
aland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже устал искать способ перекодировки строки запроса.
Решил, наконец, вот так:
web.config:
globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="ru-RU" uiCulture="ru-RU"

string sReq = Page.Request.QueryString["q"] + "";
if (sReq.Contains((char)0xfffd))
{
Request.ContentEncoding = System.Text.Encoding.Default;
sReq = HttpUtility.ParseQueryString(HttpContext.Current.Request.ServerVariables["QUERY_STRING"], System.Text.Encoding.Default)["q"];
}
при этом System.Text.Encoding.Default - это "windows-1251"
если в адресной строке IE параметр q набран по-русски, то срабатывает условие if
если то же самое в Chrome, то он сам уже кодирует строку в %D0%90%D0%BB%D0%
и достаточно взять Page.Request.QueryString["q"].
...
Рейтинг: 0 / 0
Перекодирование Request.Form
    #37555808
noname-tier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раздуплил, таким кодом:
Код: plaintext
1.
2.
3.
            var bytes = new byte[Request.TotalBytes];
            Request.InputStream.Read(bytes, 0, Request.TotalBytes);
            var str = Encoding.GetEncoding(_ps.Encod).GetString(HttpUtility.UrlDecodeToBytes(Encoding.GetEncoding(_ps.Encod).GetString(bytes), Encoding.UTF8));


где _ps.Encod - кодировка отсылаемой инфы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Перекодирование Request.Form
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]