私は .NET 4.5 を使用しており、URI クエリ文字列をNameValueCollection
. 正しい方法はHttpUtility.ParseQueryString(string query)
、取得した文字列を取得しUri.Query
て a を返すを使用することNameValueCollection
です。Uri.Query
RFC 2396 に従ってエスケープされた文字列を返し、HttpUtility.ParseQueryString(string query)
URL エンコードされた文字列を期待します。RFC 2396 と URL エンコーディングが同じものであると仮定すると、これは正常に機能するはずです。
ただし、「UTF8形式を使用してクエリ文字列を解析する」と主張するドキュメント。を受け取り、 UTF8 の代わりにそれを使用ParseQueryString
するオーバーロードされたメソッドもあります。System.Text.Encoding
私の質問は、エンコーディングとして UTF8 を使用するとはどういう意味ですか? 入力は astring
で、定義上 (C# では) UTF-16 です。それはどのように UTF-8 として解釈されますか? この場合、エンコーディングとして UTF8 と UTF16 を使用することの違いは何ですか? 私の懸念は、私は任意のユーザー入力を受け入れているため、エンコーディングを失敗させると、セキュリティ上のリスクが生じる可能性があることです (つまり、ユーザーがスクリプトの悪用をすり抜けられる可能性があります)。
このトピックに関する以前の質問 ( How to parse a query string into a NameValueCollection in .NET ) がありますが、特にエンコーディングの問題には対応していません。