Base 64编码的查询字符串参数,用于替换字符

时间:2013-01-11 12:00:42

标签: asp.net-mvc encoding query-string

我有一个querystring参数,它是一个转换为Base64的编码字符串。然后将该参数嵌入电子邮件中的链接中。当我单击电子邮件中的链接时,querystring参数已将其中的所有+字符替换为空格字符。没有其他差异。有没有一种方法我可以调用来消毒字符串并有效地再次替换空格。我正在做一个字符串替换,这有点胖。有什么东西导致更换,但我不确定是什么。有没有人遇到过这样的事情?

示例 - 浏览器URL中的查询字符串参数值:

yo3rZZbZyG4UCN+L3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl+3lA7qn+lOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw==

控制器操作中字符串的值:

yo3rZZbZyG4UCN L3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl 3lA7qn lOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw==

3 个答案:

答案 0 :(得分:2)

您应该将base64字符串URL编码为链接,因此它是:

yo3rZZbZyG4UCN%2BL3pcTYJXmWEggnkW1qcyJk2uBrVTtGUSKIlBcJ8e9TSx8BHjHJv0JhI8H6LbIqUl%2B3lA7qn%2BlOgpSi3rCGN4bm5moOWcCA449C1Z3zj7J1FkOXH2HMox4VUZ7x7fF65MRwuBBmw%3D%3D
.NET中的

HttpUtility.UrlEncode(base64str)或javascript中的encodeURIComponent(base64str)

答案 1 :(得分:1)

你可以使用System.Web.HttpServerUtility.UrlTokenEncode(来自http://brockallen.com/2014/10/17/base64url-encoding/#comments

答案 2 :(得分:0)

这样做是因为+符号被解释为标记,表示后面跟着另一个参数。这就是它被破坏的原因。在将字符串传递给服务器之前,您应对其进行URL编码。