2016-04-23 7 views
0

最近、文字エンコードに関するいくつかの問題が発生しました。 クエリ文字列にASCII以外の文字が含まれているHTTP GETリクエストを発行しようとしたとき、サーバーがパラメータを正しくデコードできないことが判明しました。サーバは、クエリ文字列がどの文字エンコーディングをGETリクエストで使用しているかをどのように知ることができますか?

現時点での解決方法は、tomcatのserver.xmlをコンフィグレーションし、という要素を<Connector>要素に追加することです。 これは問題を解決します。しかし、私の質問は次のとおりです:URLがutf-8でエンコードされていないとしたらどうなりますか?(ANSIエンコードのように、そうすることはできますか?)

URLエンコーディング単に固定値を設定する以外の方法を使用していますか?

PS:文字エンコーディングの基本と、UTF-8とUnicodeの違いを知っています。

+0

[このSOの質問](http://stackoverflow.com/questions/1549213/whats-the-correct-encoding-of-http-get-request-strings)が問題を扱います。標準では、urlが8859-1で表現されていることが要求されていますが、パーセントエンコーディングをutf-8オクテットシーケンスに適用すると、これは制限ではありません。コンセンサスは、それが行く道だと思われる。 – collapsar

答えて

1

サーバーは、リソースへの(パーセントエンコードされた)URLを受け入れる文字セットを指定します。クライアントが間違った文字セットでURLを送信すると、正しく動作しません。ただし、サーバーが希望の文字セットを宣言できるようにするプロトコルはありません。だからそれは一種のキャッチ22です。 URLがHTMLページに由来する場合は、HTMLの文字セットを使用します。それ以外の場合は、推測する必要があります。サーバーがUTF-8を受け入れない場合、おそらく間違っていると思われます。

関連する問題