3

私は次のようなURLを持っています

http://mysite.com/default.aspx?q=%E1

どこ%E1にあるはずáです。Request.QueryStringC#ページから電話をかけると

http://mysite.com/default.aspx?q=%ufffd

アクセントのあるキャラクターに対してこれを行います。%E1, %E3, %E9, %EDなどはすべてとして渡され%ufffdます。通常のエンコードされた値(、、%2D%2E%27すべて正しく渡されます。

構成ファイルには、グローバリゼーションセクションのresponseEncoding/がすでにUTF-8に設定されています。requestEncoding

どうすれば正しい値を読み取ることができますか?

私はクエリ文字列を生成する人ではなく、それを制御できないことに注意してください。

4

1 に答える 1

3

U + 00E1áとしてエンコードされているのは事実ですが、UTF-8エンコード(URLパラメーターに関連)はです。0xC3 0xA1

http://en.wikipedia.org/wiki/%C3%81のように、アクセント付きの文字でWikipediaエントリを呼び出すことで確認できます。

U + FFFDはUnicode置換文字であり、指定された文字値をUnicodeで正しくエンコードできないことを示します。

アップデート:

あなたの質問には2つのポイントがあります。

最初に:Unicode文字列をパラメータとしてエンコードするにはどうすればよいですか。使用する

"?q=" + HttpUtility.UrlEncode(value)

2番目:Unicode値を取得するにはどうすればよいですか?使用する:

Request["q"]

自分が管理していない他のソースからを受け取った場合は%E1、RawUrlが役立つかもしれません。(私は試していません)

于 2013-01-14T21:49:29.313 に答える