C# での URL セーフな Base64 エンコード
Base64 エンコードは、URL ベースのアプリケーションを扱うときにデータの整合性と可読性を確保するために重要です。 C# では、組み込みの Base64 エンコード機能により、バイナリ データをテキスト ベースの表現に変換する便利な方法が提供されます。ただし、エンコードされた文字列にパディング文字 (「==」) が追加されるため、URL で使用すると問題が発生する可能性があります。
URL セキュリティ エンコーディング
この制限を克服するために、URL セーフ エンコーディングではパディング文字が削除され、特定の問題のある文字 (" "、"/"、"=") が URL フレンドリな文字 ("-"、"_"、"") に置き換えられます。これにより、解釈上の問題を引き起こすことなく、エンコードされた文字列を安全に URL パラメータに転送できるようになります。
C# での URL セーフ エンコーディングの実装
Java のコーデック ライブラリとは異なり、C# には URL セーフ エンコーディング関数が組み込まれていません。ただし、いくつかの簡単な手順で同じ結果を得ることができます。
Convert.ToBase64String()
を使用します。 TrimEnd()
を使用します。 Replace()
に置き換えます (たとえば、「 " を「-」に、「/」を「_」に置き換えます)。 例
<code class="language-csharp">byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("StringToEncode"); string returnValue = System.Convert.ToBase64String(toEncodeAsBytes) .TrimEnd(new char[] {'='}).Replace('+', '-').Replace('/', '_');</code>
注: 効率を向上させるために、パディング文字配列を静的な読み取り専用フィールドとして定義できます。
プロセスを逆にします
URL セーフにエンコードされた文字列をデコードして元の形式に戻すには、次のプロセスを逆に実行します。
Convert.FromBase64String()
を使用して文字列をバイナリ データに変換し直します。 例
<code class="language-csharp">string incoming = returnValue .Replace('_', '/').Replace('-', '+'); switch(incoming.Length % 4) { case 2: incoming += "=="; break; case 3: incoming += "="; break; } byte[] bytes = Convert.FromBase64String(incoming); string originalText = Encoding.ASCII.GetString(bytes);</code>
これらの手順を組み合わせることで、C# で URL セーフ エンコーディングを効果的に実装できます。相互運用性が必要なシナリオで互換性を確保するには、一般的に使用されるコーデック ライブラリのメソッドがこの実装と一致しているかどうかをテストすることが重要です。
以上がC# で URL セーフな Base64 エンコーディングとデコーディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。