我将一个对象从一个asp.net页面传递给另一个。我将对象编码为Base64字符串并将其作为POST参数传递。但是,当接收页面读取POST值时,如果Base64字符串中有+号,则它将被换行替换。例如:
...AABDEDS+DFEAED...
变为
...AABDEDS
DFEAED...
我在发送页面中编码后立即将Base64字符串与接收页面中解码之前的字符串进行了比较,这是唯一的区别。我在将base64字符串写入请求流之前尝试了HtmlEncoding(),但这没有任何效果,所以它似乎是接收端的一个问题。
有什么想法吗?
答案 0 :(得分:2)
使用UrlEncode。 +是保留字符,需要进行编码。
答案 1 :(得分:1)
当您在参数中传递base64字符串时,您需要对其进行URL编码(以便正确地填充字符)。使用:
System.Web.HttpServerUtility.UrlEncode(base64String);
答案 2 :(得分:0)
+符号是一个特殊的URL字符,它自己就会评估到URL中的空格。
你需要在一侧Server.URLEncode
你的base64字符串(这会将Plus变为%2B而另一端变为Server.URLDecode