• ベストアンサー

サーブレットの文字化け

こんにちは。 JAVAサーブレット時の文字化けで困っています。 環境 ≪サーバー≫ OS:Linux Tomcat4.1.31 JAVA1.4.2 ≪クライアント≫ OS:Windows2000 クライアントからhttp:192.168.X.X:8080/xxx.jspを呼び出して実行しています。 JSPファイル(Shift-JISで保存)からサーブレットを呼び出して サーブレットでrequest.getParameterをした時に、日本語が文字化けしてしまいます。 JSPファイルでは <%@ page language="java" contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J"%> を指定しています。 なにかわかりましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hatimiti
  • ベストアンサー率68% (26/38)
回答No.1

Servlet 側で request.setCharacterEncoding("Windows-31J") は行っていますでしょうか? request.getParameter する前に設定してみてください。

hym789
質問者

お礼

回答ありがとうございます。 サーブレットに request.setCharacterEncoding("Windows-31J"); の一行を追加して実行したら、文字化け解消しました! とても悩んでいたので助かりました。 ありがとうございました。

hym789
質問者

補足

調べてみると response.setContentType("text/html"); response.setCharacterEncoding("Windows-31J"); これは response.setContentType("text/html;charset=Windows-31J"); とおなじとあったのですが、下記のsetContentTypeだけでは 今まで通り文字化けしました。 やはり、これらは違った物なのでしょうか?

その他の回答 (1)

回答No.2

まず、文字化けの原因を明確しましょう。原因はEncodeとき使うとDecodeとき使うEncodingが違います。EncodingはUTF-8を強く推奨いたします。 1、servlet.xml URIEncoding="UTF-8" 2-1、JSP <%@ page contentType="text/html; charset=UTF-8"%> 2-2、Sevlet request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");

hym789
質問者

お礼

回答ありがとうございます。 response.setContentType("text/html"); response.setCharacterEncoding("Windows-31J"); とする事で一旦文字化けは解消しました。 しかし、UTF-8を強く推奨するとの意見を重視して、これからどうするか検証してみます。 本当に困っていたので、ありがとうございました。