JavaScriptでエンコードされたクエリテキストがいくつかありますが、サーバーサイドで同じテキストをエンコードする必要があり、発生しているエンコードが同じではないユースケースに遭遇しました。同じである必要があります。以下に例を示します。
検索ボックスに_"I like food"
_と入力し、search
ボタンを押します。 JavaScriptはこれを_%22I%20like%20food%22
_としてエンコードします
サーバー側のリクエストオブジェクトの文字列と同じ値を取得するとしましょう。次のようになります:_"\"I like food\""
_
HttpUtility.UrlEncode(value)
を使用すると、結果は_"%22I+like+food%22"
_になります。 HttpUtility.UrlPathEncode(value)
を使用すると、結果は_"\"I%20like%20food\""
_になります
したがって、UrlEncode
は引用符をエンコードしていますが、スペースに_+
_文字を使用しています。 UrlPathEncode
はスペースをエンコードしていますが、エスケープされた引用符はエンコードしていません。
両方を行うには本当に必要です。そうしないと、検索コードが完全に私を悩ませます(そして、検索コードを制御することはできません)。
チップ?
UrlPathEncode
はエスケープしません"
は、パスコンポーネントでエスケープする必要がないためです。
Uri.EscapeDataString
はあなたが望むことをすべきです。
いくつかのオプションがありますが、最も速いのはUrlEncodeを使用してからstring.replaceを実行して+
文字と%20
。
何かのようなもの
HttpUtility.UrlEncode(input).Replace("+", "%20");