0

我将一个对象从一个 asp.net 页面传递到另一个页面。我将对象编码为 Base64 字符串并将其作为 POST 参数传递。但是,当接收页面读取 POST 值时,如果 Base64 字符串中有 + 号,则将其替换为换行符。例如:

 ...AABDEDS+DFEAED...

变成

 ...AABDEDS
 DFEAED...

我将发送页面中编码后的 Base64 字符串与接收页面中解码之前的字符串进行了比较,这是唯一的区别。在将 base64 字符串写入请求流之前,我尝试了 HtmlEncoding() ,但这没有效果,所以这似乎是接收端的问题。

有任何想法吗?

4

3 回答 3

2

使用UrlEncode。+ 是保留字符,需要进行编码。

于 2009-04-20T14:06:34.987 回答
1

当您在参数中传递 base64 字符串时,您需要对其进行 URL 编码(以便字符正确出现)。采用:

System.Web.HttpServerUtility.UrlEncode(base64String);

HttpServer.UrlEncode 方法(字符串)(System.Web)

于 2009-04-20T14:09:12.953 回答
0

+ 符号是一个特殊的 URL 字符,它自己计算为 URL 中的空格。

您需要Server.URLEncode在一侧使用 base64 字符串(这会将 Plus 变成 %2B 并Server.URLDecode在另一侧

于 2009-04-20T14:09:53.263 回答