1

公式の base64 の埋め込み文字は '=' であり、URL で使用する場合はパーセントでエンコードする必要がある場合があります。エンコードされた文字列が id=encodedString などのパラメーター値としてエンコードされた文字列を使用し、安全なファイル名 (エンコードされた文字列をファイル名として直接)。

ドット ('.') は人気のある候補です。これは URL に対して安全ですが、厳密にはファイル名に対して安全ではありません。Windows では、末尾にドットが付くファイル名は許可されません

「!」私はグーグルで調べましたが、それをパディング文字として使用している人を見たことはありませんが、実行可能な選択のようです。何か案は?ありがとう!

更新: カスタマイズした base64 エンコーディングで "+" を "-" (マイナス) に置き換え、"/" を "_" (アンダースコア) に置き換えたため、"-" または "_" はパディング文字に使用できなくなりました。 .

4

4 に答える 4

4

最善の解決策 (先月、電子メール送信 Web サイトでこの問題に取り組みました) は、パディング文字 (=) をまったく使用しないことです。

パディング文字が存在する唯一の理由は、「怠惰な」デコーダーのためです。欠落している = を非常に簡単に追加できます -> テキストに対して %4 を実行し、4 から取得した数値を引くだけです。これが、文字列の末尾に追加する必要がある = の数です。C# コードは次のとおりです。

    var pad = 4 - (text.Length % 4);
    if (pad < 4)
        text = text.PadRight(text.Length + pad, '=');

また、これを行うほとんどの人は、 + と / を他の URL セーフ文字に置き換えることに関心があります... 私は提案します:

  • - で置換 / _ で置換

使用禁止 。さまざまなシステム/Webサーバーでクレイジーな結果が生じる可能性があるため(たとえば、IIS Base64でエンコードされた文字列を.で終わらせることができない場合、IISはファイルを検索します)

于 2012-06-01T22:41:41.423 に答える
1

ウィキペディアの記事には次のように記載されています。

URL バリアントの変更された Base64 が存在し、パディング「=」は使用されません

于 2010-12-06T14:54:06.587 に答える