Web サービスのクエリ文字列とパラメータを IE10 のアドレス バーに入力して、サービスの結果を取得できるようにしたいという顧客からのリクエストを受け取りました。パラメータには、次のようなヘブライ語の文字列が含まれます。
http://mywebsite.com/service.asmx/foo?param1=123¶m2=מחרוזתבעברית
そのIE10はクエリ文字列パラメーターをエンコードしないようです-?の後に続くすべての非ASCII文字。マークは '3f' バイトに変換されますが、? の前にあるものはエンコードされます。マーク - URL 自体。
たとえば、URLにアクセスしようとすると(パラメータは架空のもので、URLはそうではなく、サイトとは関係ありません)
http://www.shlomo.co.il/pageshe/sales/רכב-למכירה.asp?param=פאראם
サーバーに送信したバイトをwiresharkで調べてください。
URL のヘブライ語部分が urlencoded 文字列に置き換えられますが、ヘブライ語パラメーターが「3f」である ????? に置き換えられていることがわかります。
クロムの同じ文字列は、全体がエンコードされます。
GET http://www.shlomo.co.il/pageshe/sales/%D7%A8%D7%9B%D7%91-%D7%9C%D7%9E%D7%9B%D7%99%D7%A8%D7%94.asp?param=%D7%A4%D7%90%D7%A8%D7%90%D7%9D HTTP/1.1
win7/IE10 と winXPheb/IE8 のマシンで試してみました。
私のIE設定は次のとおりです(特に「エンコードされたアドレスを常に表示するオプション」をチェックして、それが役立つかどうかを確認して再起動しましたが、違いはありませんでした):
この問題に関する情報を探してみましたが、ほとんど見つかりませんでした。
私の質問は次のとおりです。
- それは本当にこのようなものですか、それとも何か不足していますか?
- この動作はどこかに文書化されていますか?
- パラメーターのエンコードを有効にする IE/Win の設定はありますか。
ps確かに、クライアント/Web UIを開発している場合は、クエリを単純にurlencodeしますが、顧客からの要求は、クエリをIEアドレスバーに貼り付けることでした。そのため、この特定の動作に興味があります.
ありがとう。