私はHttpListener
を使用してリクエストを処理する単純なサーバーを構築しています。私がそれに送るクエリ文字列パラメータは、必要に応じてURLエンコードされます。たとえば、漢字ストリング"尺八"
を送信する場合、エンコードは"%E5%B0%BA%E5%85%AB"
です。HttpListenerRequestでUrlエンコーディングを処理する方法は?
私のサンプルのURLは、"/?q=%E5%B0%BA%E5%85%AB"
です。私のコンテキストコールバックで
、私が持っている:
HttpListenerContext context = Listener.EndGetContext();
string rawUrl = context.Request.RawUrl;
string query = context.Request.QueryString["q"];
は、結果の確認、私が取得:
rawUrl = "/?q=%E5%B0%BA%E5%85%AB"
query = "尺八"
しかし、私はcontext.Request.Url
を見れば、私は{http://localhost:8080/?q=尺八}
を取得します。
context.Request.QueryString
のクエリ文字列が、UTF-8以外のエンコードを使用してデコードされているようです。
私の問題を回避するには、context.Request.QueryString
を無視して、これを行うことによって、自分自身を作成することです:私は正しい値を与える
var queryString = HttpUtility.ParseQueryString(context.Request.Url.Query);
を、それはハックのようなもののように思えます。
HttpListener
(またはコンテキスト、または要求)に、クエリ文字列をUTF-8と解釈する方法はありますか?それはとにかく標準だと思いますか?または、私はこの回避策で暮らすべきですか?
あなたは確かに素晴らしいクエリ文字列を持っています:D –
Downvoter?説明的なコメントを提供するのが通例です。 –