2016-10-17 2 views
2

私はTomcat 8.5.6のデフォルトインストールを持っています。 UTF-8でエンコードされたリクエストは正しく解釈されていないようですが、デフォルトでは厳密なモードではないにしてもUTF-8でなければなりません。私はチルダ文字Nは私のサーブレットハンドラで正しく復号されていない参照、リクエストパラメータ用のServletハンドラでutf-8を使用するには?

HttpPost post = new HttpPost(url); 
post.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 
... 

テスト:

public class MyServlet extends HttpServlet { 
    protected void doPost(HttpServletRequest request, ...) { 
     String tildeTest = request.getParam("foo"); // no good. 
    } 
} 

私は明示的にアクセスする前にリクエストにエンコーディングを設定した場合、私のJavaのPOSTリクエストは次のようになりそれは、正しくデコード:

protected void doPost(HttpServletRequest request, ...) { 
    request.setCharacterEncoding("UTF-8"); 
    String tildeTest = request.getParam("foo"); // works! 
    ... 
} 

ので、私はよく分からない場合:

  1. Tomcat 8.5.6は実際にどこでもUTF-8を使用していないため、設定ファイルのどこかに手動で設定する必要があります。

  2. 私のhttp要求には、Tomcatにどのエンコーディングを使用するかを伝えるヘッダーがありません。おそらくhttpポストは、Tomcatがちょうど賞賛している他のエンコーディングにデフォルト設定されています。

誰にでも分かりますか?

おかげ

+0

UTF-8に設定されたデフォルトのエンコーディングと文字エンコーディングフィルタを使用http://stackoverflow.com/a/11185963/3511123何が必要である可能性があります。 (私は ''設定の 'URIEncoding =" UTF-8 "属性を意味します) –

+0

@JozefChocholacekええ、私はそれを見ましたが、ドキュメントはすべてデフォルトで現在utf-私が物事を変え始める前に、なぜこれがutf-8にならないのかを明確にすること。 – user3203425

答えて

0

https://wiki.apache.org/tomcat/FAQ/CharacterEncoding

は、POSTリクエストは、彼らが送るパラメータと値 のエンコーディングを指定する必要があります。多くのクライアントが明示的なエンコーディングを設定することができないため、 デフォルトが使用されます(ISO-8859-1)。

What can you recommend to just make everything work? (How to use UTF-8 everywhere).

サーブレットは1,2が関連

  1. 設定はURIEncoding = "UTF-8" あなたの中にサーバー上でなければなりません要求したため、これを確実にするために記載されている6つの方法があります。 xml。参考文献:HTTPコネクタ、AJPコネクタ
  2. 答えの)ポイント3
関連する問題