2016-07-27 19 views
1

My Tomcat WebサーバーがStrutsフレームワーク(v1)を使用しています。HttpRequestのパラメータJava(Tomcat)のデフォルトエンコーディング

リクエストパラメータを読み込むときに、適切な値を取得するために、パラメータをISO-8859-1からUTF-8にコード化する必要があります。例:

String fName = request.getParameter("fName"); 
String displayName = new String(fName.getBytes("ISO-859-1"), "UTF-8"); 
persistName(displayName); 

なぜデフォルトのエンコーディングがISO-8859-1であるのですか? どこに定義されていますか、どのように変更するのですか?

のEnvの詳細:

  • Serverバージョン:Apache Tomcatの/ 7.0.62
  • OS名:Linuxの
  • JVMのバージョン:1.8.0_92-b14の

答えて

2

私は思います正しくリコールすれば、コネクタのURIEncodingプロパティをデフォルトのUTF-8に設定できます。

this linkによると、Tomcat 8(厳格なサーブレット準拠がオフの場合)のデフォルトはUTF-8です。私の会社のTomcat 7では、これを明示的に設定しました。コネクタ要素(単数または複数)のためにserver.xmlの

<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="443" URIEncoding="UTF-8"/> 

Tomcat 7 HTTP connectorの構成ドキュメントによれば、これはデフォルトISO-8859-1によるものです。

Tomcat 8 HTTP connectorの設定ドキュメントには、org.apache.catalina。 STRICT_SERVLET_COMPLIANCEがfalseの場合、UTF-8が使用されます。

これは、文字エンコーディングが指定されていない場合、ISO-8859-1が使用されていることを示すサーブレット2.4仕様書にさかのぼります。

0

ファイルのエンコードがutf-8で、htmlのcharsetメタタグもutf-8に設定されていることを確認してください。