在我的android应用程序中,我正在使用java.util.Base64
标记URL_SAFE
和进行编码和解码NO_WRAP
。
但是,当我尝试使用C#应用程序对其进行解码时,我HttpServerUtility.UrlTokenEncode
又回来了null
。在这种状态下,我的编码字符串也无法在Android应用程序上解码。
我错过了什么?不将URL_SAFE
标志确保Base64编码字符串有没有+
,/
以及任何额外的填充?为什么UrlTokenEncode
不接受Base64值?
UrlTokenEncode
回来null
是因为我通过了一个string
而不是一个UrlToken
。
在Android中,对于编码/解码,都坚持使用URL_SAFE
and和NO_WRAP
Base64标志,我设法将C#应用程序更改为以url_safe方式进行解码/编码。
public string UrlEncode(string str)
{
if (str == null || str == "")
{
return null;
}
byte[] bytesToEncode = System.Text.UTF8Encoding.UTF8.GetBytes(str);
String returnVal = System.Convert.ToBase64String(bytesToEncode);
return returnVal.TrimEnd('=').Replace('+', '-').Replace('/', '_');
}
public string UrlDecode(string str)
{
if (str == null || str == "")
{
return null;
}
str.Replace('-', '+');
str.Replace('_', '/');
int paddings = str.Length % 4;
if (paddings > 0)
{
str += new string('=', 4 - paddings);
}
byte[] encodedDataAsBytes = System.Convert.FromBase64String(str);
string returnVal = System.Text.UTF8Encoding.UTF8.GetString(encodedDataAsBytes);
return returnVal;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句