URL'lerde kullanmak için alfabeyi değiştirmek yaygındır , böylece% kodlaması gerekmez; sadece 3 65 karakter sorunlu - +
, /
ve =
. en yaygın değiştirmeler -
yerine +
ve _
yerine gelir /
. Dolguya gelince: sadece çıkarın (the =
); gerekli dolgu miktarını tahmin edebilirsiniz . Diğer tarafta: sadece süreci tersine çevirin:
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes)
.TrimEnd(padding).Replace('+', '-').Replace('/', '_');
ile:
static readonly char[] padding = { '=' };
ve tersine çevirmek için:
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);
Bununla birlikte, ilginç soru şudur: Bu, "ortak kodek kitaplığının" kullandığı yaklaşımın aynısı mı? Test etmek kesinlikle makul bir ilk şey olacaktır - bu oldukça yaygın bir yaklaşımdır.
Url.Encode
şerit üzerindeBASE64
?