私は次のURLを持っています:
http://localhost:8041/Reforge.aspx?name=Cyan%ECde&realmId=1
%EC
パラメータの値に注意してname
ください。
%EC = 236 = ì(igrave)
私の行動方法では:
public ActionResult Index(string name, int realmId) {...}
name [4]は、コード65533(0xFFFD)の文字です。私は何が間違っているのですか?
私は次のURLを持っています:
http://localhost:8041/Reforge.aspx?name=Cyan%ECde&realmId=1
%EC
パラメータの値に注意してname
ください。
%EC = 236 = ì(igrave)
私の行動方法では:
public ActionResult Index(string name, int realmId) {...}
name [4]は、コード65533(0xFFFD)の文字です。私は何が間違っているのですか?
HttpUtility.UrlDecode("%EC")
その文字(65533)を出力として提供します。
HttpUtility.UrlEncode("ì")
を生成します"%c3%ac"
これをどのように生成してい%EC
ますか?ASP.NETが期待しているように、エンコーディングが機能していないようです
アップデート
http://localhost:8041/Reforge.aspx?name=Cyanìde&realmId=1
ブラウザにアクセスしているだけで、正しくエンコードされていないと言います。そもそもそれをブラウザに入力するべきではないことをお勧めします。そのURLを生成している場合は、それをエンコードする必要があります(としてレンダリングされるように<a href="http://localhost:8041/Reforge.aspx?name=Cyan%c3%acde&realmId=1">
)。Firefoxは、ホバーするとìでこれを表示しますが、クリックまたはコピーするとエンコードされたバージョンを表示します。
ユーザーが任意のUnicodeをURLに入力している場合、それを処理するための良い方法はありません(事実上、無効な要求を送信しているため)。
これは、web.configのグローバリゼーション要素によって異なります。
<globalization requestEncoding="iso-8859-1" />
または、サイトがUTF-8の場合
<globalization requestEncoding="utf-8" />
ただし、この場合、URLはのようになっている必要がありますname=Cyan%c3%acde
。適切にエンコードされるように、常にURLヘルパーを使用してURLを生成する必要があります。
ASP.NETとjsでのURLエンコード(ìは%ECとしてエンコードする必要があります)で同様の問題に直面しました。
ノードに設定<globalization requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" \>
する場合は、でグローバリゼーション設定を使用しているこの方法で、urlencode \decodecauseを使用する必要があります。system.web
HttpContext.Current.Server.UrlEncode
web.config
UrlEncode
現在使用する前は、現在のグローバリゼーション設定を使用しないものHttpContext
を使用していました。HttpUtility.UrlDecode
私のために働いた!
私が見つけることができるいくつかのこと:
HttpServerUtility.UrlDecode(あなたのパラメータ)
HttpUtility.UrlDecode(your param)
Server.UrlDecode(あなたのパラメータ)
これらのどれかがあなたのために働いていますか?