てぃーだブログ › iiiso の海。時々、セントレア。宵のうち、システム開発。 › 【Java / Servlet】  › 【Java】setCharacterEncoding() メソッドで文字化けが解消しない

2015年01月24日

【Java】setCharacterEncoding() メソッドで文字化けが解消しない

Servlet でGET メソッドで文字列をサーバにリクエストした後、ServletRequest クラスのメソッドsetCharacterEncoding() を使って、URLエンコードをしようとしてみたが、日本語の文字化けが解消しなかったので、ほかの方法を試してみた。

[ExampleServlet.java]

import java.io.*;
import javax.servlet.*;

public class ExampleServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException{
		
			request.setCharacterEncoding("UTF-8");
              ・
              ・
	}
}


■環境
Windows 8.1(64bit)
Tomcat 7.0.11 [ apache-tomcat-7.0.11-windows-x64.zip / ダウンロード ]
Java SE 6 Update 24 [ jdk-6u24-windows-x64.exe / ダウンロード ]


■server.xml に、「URIEncoding=文字エンコード名」を追記する
この方法で文字化けは解消しました

※編集したファイル: [ Tomcat のインストールフォルダ ] / conf / server.xml

[server.xml]
      ・
      ・
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URIEncoding="UTF-8" />


■ServletRequest クラスのメソッドsetCharacterEncoding() は、ウンともスンとも言わず・・・。
次の方法では、文字化けは解消しませんでした。

1. [server.xml] を以下のように記述し、setCharacterEncoding() メソッドと並記する方法

[server.xml]
      ・
      ・
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               useBodyEncodingForURI="true" />

2. javax.servlet.Filter インターフェースを実装したFilter クラスを追加して、web.xml から呼び出す方法





上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。