- ベストアンサー
サーブレットの文字化け
こんにちは。 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"%> を指定しています。 なにかわかりましたら教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Servlet 側で request.setCharacterEncoding("Windows-31J") は行っていますでしょうか? request.getParameter する前に設定してみてください。
その他の回答 (1)
- cowboy_ok
- ベストアンサー率66% (2/3)
まず、文字化けの原因を明確しましょう。原因は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");
お礼
回答ありがとうございます。 response.setContentType("text/html"); response.setCharacterEncoding("Windows-31J"); とする事で一旦文字化けは解消しました。 しかし、UTF-8を強く推奨するとの意見を重視して、これからどうするか検証してみます。 本当に困っていたので、ありがとうございました。
お礼
回答ありがとうございます。 サーブレットに request.setCharacterEncoding("Windows-31J"); の一行を追加して実行したら、文字化け解消しました! とても悩んでいたので助かりました。 ありがとうございました。
補足
調べてみると response.setContentType("text/html"); response.setCharacterEncoding("Windows-31J"); これは response.setContentType("text/html;charset=Windows-31J"); とおなじとあったのですが、下記のsetContentTypeだけでは 今まで通り文字化けしました。 やはり、これらは違った物なのでしょうか?