Як правило, просто поміняти алфавіт для використання в URL-адресах, щоб не було необхідного кодування% -в; лише 3 з 65 символів є проблематичними - +
, /
і =
. найчастіші заміни відбуваються -
замість +
та _
на місці /
. Що стосується прокладки: просто вийміть її (the =
); Ви можете зробити висновок про необхідну кількість прокладки. З іншого боку: просто поверніть процес:
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
на рядку вBASE64
?