私は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!
...
}
ので、私はよく分からない場合:
Tomcat 8.5.6は実際にどこでもUTF-8を使用していないため、設定ファイルのどこかに手動で設定する必要があります。
私のhttp要求には、Tomcatにどのエンコーディングを使用するかを伝えるヘッダーがありません。おそらくhttpポストは、Tomcatがちょうど賞賛している他のエンコーディングにデフォルト設定されています。
誰にでも分かりますか?
おかげ
UTF-8に設定されたデフォルトのエンコーディングと文字エンコーディングフィルタを使用http://stackoverflow.com/a/11185963/3511123何が必要である可能性があります。 (私は ' '設定の 'URIEncoding =" UTF-8 "属性を意味します) –
@JozefChocholacekええ、私はそれを見ましたが、ドキュメントはすべてデフォルトで現在utf-私が物事を変え始める前に、なぜこれがutf-8にならないのかを明確にすること。 – user3203425