我正在尝试解码下面的Base64字符串,我从一个URL中获得如下:
string msgFromUrl = "j3oaCbiwIfZF1QFa%2FHkMaW5lVpnOMBsA5wYI";
byte[] data = Convert.FromBase64String(msgFromUrl);
string decoded = Encoding.UTF8.GetString(data);
Console.WriteLine(decoded);
我得到了一个错误的字符串,我需要解码。我得到的错误是:
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
我意识到字符串中有一个百分比符号,当我试图删除它时,我没有达到Base64 char的有效长度。因为我是从一个url中检索这个字符串的,所以是否有任何隐藏的东西,或者我必须做更多的事情才能解码编码的字符串?
谢谢你。
1条答案
按热度按时间esyap4oy1#
事实上,有一种方法可以做到这一点,但要做到这一点,你必须了解url编码,例如,当数据通过url地址以阿拉伯语发送时,你会注意到数据是这样的:
%D9%85%D8%B1%D8%AD%D8%A8%D8%A2%20%D8%A7%D8%B5%D8%AF%D9%82%D8%A7%D8%A6%D9%89
但这通常取决于浏览器。有一些浏览器,如手机的Opera浏览器,不能与url编码系统一起工作。相反,所有值 与其他浏览器(如Google Chrome)不同的是,它们是按原样发送的,没有任何变化,因此您必须首先解码值,因此我们可以提出这个例子:
正如你在一些浏览器中看到的,+号被替换为空格,所以我们要做的就是在获取数据之前。我们首先将所有空格替换为+号,这样问题就解决了,如前一个例子所示,您可以通过url发送Base64,没有任何限制