パラメータ付きの 2 つの URL があります
http://localhost:8041/Reforge.aspx?name=CyanГ
http://localhost:8041/Reforge.aspx?name=Cyanì
最初の URL では、Firefox は最後の文字 (Г) を %D0%93 (正確には UTF-8) としてエンコードします。2 番目の URL で、Firefox は最後の文字 (ì) を %EC としてエンコードします (ISO-8859-1 では正しく)
ASP.NET MVC は、web.config の要素を使用して、UTF-8 または ISO-8859-1 を想定するように構成できます。しかし、Firefox はコンテキストに応じてエンコーディングを切り替えます。
UTF-8 は、Latin-1 エンコーディングと明確に区別できることに注意してください。
いずれかの形式を使用してパラメーター値をデコードするように ASP.NET MVC に教える方法はありますか?
編集:エンコーディングを正しく処理する生のクエリ文字列をデコードするために使用できるクラスはありますか? 注 - Firefox は UTF-8またはLatin-1 エンコーディングのいずれかを使用しますが、同時に両方を使用することはありません。したがって、私の計画は、UTF-8 を使用して手動でデコードを試み、「無効な」文字 (FFFD) が見つかった場合は探して、Latin-1 デコードを試すことです。
例:
Firefox は次のようにエンコードします。
- v v
http://localhost:8041/Reforge.aspx?name=ArcânisГ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%C3%A2nis%D0%93`
UTF8
非 ASCII 文字の両方にエンコーディングが使用されていることに注意してください。
- v
http://localhost:8041/Reforge.aspx?name=Arcâ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%E2
ISO-8859-1
(Latin-1) エンコーディングが非 ASCII 文字に使用されることに注意してください。