Повреждение строки в ASP.NET Base64 - PullRequest
0 голосов
/ 20 апреля 2009

Я передаю объект с одной страницы asp.net на другую. Я кодирую объект как строку Base64 и передаю его как параметр POST. Однако, когда принимающая страница считывает значение POST, если в строке Base64 есть знак +, она заменяется переводом строки. Например:

 ...AABDEDS+DFEAED...

становится

 ...AABDEDS
 DFEAED...

Я сравнил строку Base64 сразу после кодирования на отправляющей странице со строкой непосредственно перед декодированием на принимающей странице, и это единственное отличие. Я пробовал HtmlEncoding () строку base64 перед записью ее в поток запросов, но это не имело никакого эффекта, поэтому, похоже, это проблема на принимающей стороне.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2009

Использовать UrlEncode . + Является зарезервированным символом и должен быть закодирован.

1 голос
/ 20 апреля 2009

Когда вы передаете строку base64 в параметре, вам нужно URL кодировать ее (чтобы символы правильно встречались). Использование:

System.Web.HttpServerUtility.UrlEncode(base64String);

Метод HttpServer.UrlEncode (String) (System.Web)

0 голосов
/ 20 апреля 2009

символ + - это специальный символ URL, который сам по себе оценивается как пробел в URL.

Вам потребуется Server.URLEncode строка base64 с одной стороны (что превратит плюс в% 2B, а Server.URLDecode - с другой стороны

...