こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

サーブレットの文字化け

こんにちは。
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"%>
を指定しています。

なにかわかりましたら教えてください。
よろしくお願いします。

投稿日時 - 2009-12-09 11:03:24

QNo.5509279

困ってます

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

Servlet 側で request.setCharacterEncoding("Windows-31J") は行っていますでしょうか?

request.getParameter する前に設定してみてください。

投稿日時 - 2009-12-09 11:30:07

補足

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

投稿日時 - 2009-12-09 14:42:58

お礼

回答ありがとうございます。

サーブレットに
request.setCharacterEncoding("Windows-31J");
の一行を追加して実行したら、文字化け解消しました!

とても悩んでいたので助かりました。
ありがとうございました。

投稿日時 - 2009-12-09 12:10:59

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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");

投稿日時 - 2009-12-10 16:08:34

お礼

回答ありがとうございます。

response.setContentType("text/html");
response.setCharacterEncoding("Windows-31J");
とする事で一旦文字化けは解消しました。

しかし、UTF-8を強く推奨するとの意見を重視して、これからどうするか検証してみます。
本当に困っていたので、ありがとうございました。

投稿日時 - 2009-12-16 09:10:07

あなたにオススメの質問