Метод кодирования URL для специального символа в С#

Я использую метод post для отправки данных, и я использовал

HttpUtility.UrlEncode(string data)

для URL-кодирования данных. Но для некоторой определенной строки данные на стороне сервера отображаются иначе, чем то, что я отправил.

EX:

string data = "¦=¦=¦";
data = HttpUtility.UrlEncode(data);

после отправки данных на сервер строка отображается как ¦=¦=¦, но исходная строка была ¦=¦=¦.

И какой код URL я должен использовать, который может кодировать "(" в %28 , ")" в %29. Я могу найти это.

Я также использовал HttpUtility.UrlEncodeUnicode, HttpUtility.UrlPathEncode, но не работает. Какая кодировка URL подходит для этого типа строки?


person Prince123    schedule 21.06.2012    source источник


Ответы (2)


В вашем примере кода вы используете ASCII для символа "¦", это недопустимый символ ASCII. Используйте Unicode, и это может сработать.

System.Text.UnicodeEncoding uni = new UnicodeEncoding();
byteArray = uni.GetBytes(data);
person retslig    schedule 21.06.2012
comment
Вы используете ASCII для символа ¦ это недопустимый символ ASCII. Используйте Unicode, и это может сработать. - person retslig; 22.06.2012
comment
Можете ли вы снова показать код, который вы используете, поскольку, когда я проверяю это, я получаю ¦=¦=¦, как и ожидалось. Однако я использую контроллер MVC. - person retslig; 22.06.2012
comment
Мой код находится здесь stackoverflow.com/questions/ 11158916/ - person Prince123; 22.06.2012

Используйте HttpUtility.UrlDecode(data), чтобы вернуть его как "¦=¦=¦"

person HatSoft    schedule 21.06.2012
comment
Я бы посоветовал вам сохранить одинаковую кодировку на каждой стороне, например, строковые данные = ¦=¦=¦; данные = HttpUtility.UrlEncode (данные, Encoding.UTF8); строка dataOnServerSide = HttpUtility.UrlDecode (данные, Encoding.UTF8); - person HatSoft; 21.06.2012
comment
вы можете добиться декодирования со стороны сервера, создав собственный HttpHandler msdn.microsoft.com/en -us/library/bb398986.aspx - person HatSoft; 21.06.2012
comment
не работал для меня. Я могу найти проблему с моим кодом или что-то еще? - person Prince123; 21.06.2012
comment
я думаю, что у меня проблема с отправкой этого потока данных, но не уверен. - person Prince123; 21.06.2012
comment
Если вы этого не сделали, установите Fiddler2 и используйте его для отслеживания запросов и данных, проверьте необработанный формат, это даст вам лучшее представление о том, что происходит. - person HatSoft; 21.06.2012
comment
Я установил fiddler2, и необработанные данные не совпадают с необработанными данными с помощью браузера, поэтому я думаю, что это может быть ошибка отправки кода. Поэтому я добавил код отправки, который использую сейчас. - person Prince123; 21.06.2012