%エンコーディングが不要になるように、URLで使用するために単にアルファベットを交換するのが一般的です。わずか3 65の文字は問題がある- +
、/
と=
。最も一般的な代替品がある-
の代わりに、+
と_
の代わりに/
。パディングについては、それを削除するだけ=
です(); 必要なパディングの量を推測できます。反対側:プロセスを逆にしてください:
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
か?