通常,只需交换字母以用于url中,这样就不必进行%编码;只有65个字符的3是有问题- +
,/
和=
。最常见的替换是-
到位的+
,并_
代替/
。至于填充:只需将其删除(=
)即可;您可以推断出所需的填充量。在另一端:只需逆转该过程即可:
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
与:
static readonly char[] padding = { '=' };
并反转:
string incoming = returnValue
.Replace('_', '/').Replace('-', '+');
switch(returnValue.Length % 4) {
case 2: incoming += "=="; break;
case 3: incoming += "="; break;
}
byte[] bytes = Convert.FromBase64String(incoming);
string originalText = Encoding.ASCII.GetString(bytes);
一个有趣的问题,却是:这是相同的做法,即“共同编解码器库”用途?测试当然是一件很合理的事情-这是一种非常普遍的方法。
Url.Encode
在string中使用BASE64
吗?