私は考えていた...
(クエリ文字列のbase64のプラス '+'記号の問題を除きます-これは 'space'に変換され、%2bで解決できます): --->クエリ文字列でデータを転送するための好ましい方法はどれですか?
どちらの機能もJSコマンドを介して使用できます。
btoa
encodeUriComponent
だから私自身(そしてあなた)に尋ねる:
いつ使用すべきかwhat? (常に使用されるencodeUriCompoonent
-本能による)。
定義が異なるという問題-しかし、実装は似ている可能性があります...
私は尋ねる理由を見つけたと思います...(そしてなぜ誰も以前にそれを尋ねなかった理由)
base64は、バイナリデータの転送に使用されます。 (IEではサポートされていません。空間文字をエンコードできません。)
encodeURIComponentは特殊文字のみをエンコードします。
興味深いのは、encodeURIComponentがないと、Uni64文字列にbase64を適用できないことです。 https://developer.mozilla.org/en/DOM/window.btoa
これに対する答えは、サーバー側のアプリケーションに完全に依存しています。
'+'は'space'に変換されません=クライアントによって-それは'space'に自動翻訳されますサーバーサイドアプリ、主に下位互換性のため(逆に、一部のサーバーサイドアプリは'+'を'+'RFC3986 に準拠)。
クライアントに関する限り-btoa()
およびencodeURIComponent()
(およびencodeURI()
およびescape()
)は、テキストの文字列を異なる抽象化されたものにエンコードするだけですさまざまなエンコーディングまたはエスケープアルゴリズムによる文字列-btoa()
は通常、base64エンコーディングを使用して最小の結果文字列を生成しますが、 mezeのコメント) re:unicodeはここで考慮する価値があります。
注意すべき重要な点は、サーバー側のアプリケーション(場合によってはASP.NETベースのセットアップ)が何を使用してその文字列を元の形式にデコードするかです。