dポイントプレゼントキャンペーン実施中!

こんにちは。

質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。

----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />

<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------------------------------------
※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。

どう対処してよいか全く分かりません。
もし何か分かることがありましたらご教授御願い致します。

A 回答 (3件)

何分情報が少なく的を得ていないかもしれませんが、


tBean.getUnsei()
で表示される文字列は
"??????????????"
でしょうか?
だとしたらエンコーディングを2回やっている可能性があります。JSPから受け取った文字列のエンコーディング処理を再度確認してみてください。

この回答への補足

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

説明不足で申し訳ございません。
imamu252さんのおっしゃる通り、"?"が多数出力(¢のような記号を含む)されます。

今回のサンプルのシステムの流れは、

(1)HTMLで入力されたデータ(漢字含む)をサーブレットに渡す。
(2)サーブレットがHTMLよりデータを受け取り、そのデータを元にBeanを起動させる
(3)Beanで処理された結果の一部をサーブレット→JSPに渡す
(4)JSPより、処理されたBean内のメソッドを呼び、メソッドで取得した文字列をブラウザに表示する。

です。

(3)の処理された結果の一部(HTMLより受け取った文字列の表示)というのは、正しい結果が得られたのですが、
(4)の処理されたBean内のメソッドを呼び出して、文字列を出力する際に文字化けが起こっています。


エンコーディングについてですが、
(1)サーブレット内で、
response.setContentType("text/html;charset=Shift_JIS");
(2)JSPファイルの<HEAD>内で、
<%@ page contentType="text/html; charset=Shift_JIS" %>
の2個所設定しています。

補足日時:2002/05/13 11:41
    • good
    • 0
この回答へのお礼

問題解決しました!

原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。

JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。

今回はどうもありがとうございました。

また何かありましたら宜しく御願い致します。

お礼日時:2002/05/13 14:01

質問を読むかぎり、Beanのコンパイル時にミスってる


以外に考えられないです。
Beanのソースコードのエンコーディングと、
コンパイルした環境のデフォルトのエンコーディングが
異なっている、ということはないですか?

この回答への補足

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

Beanについてですが、ソースコードに
<meta http-equiv="Content-Type" content="text/hmtl;charset=Shift_JIS">

<%@ page contentType="text/html; charset=Shift_JIS" %>

のようなコンテントタイプやキャラセットは設定していません。

サーブレットやJSPだけでなく、Beanにも設定する必要があるのでしょうか?
ちなみに雑誌のサンプルコードをそのまま使っているのですが、
雑誌のサンプルコードのBeanの部分にはコンテントタイプやキャラセットは設定されていませんでした。

補足日時:2002/05/13 11:38
    • good
    • 0
この回答へのお礼

問題解決しました!

原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。

JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。

今回はどうもありがとうございました。

また何かありましたら宜しく御願い致します。

お礼日時:2002/05/13 14:00

はずしていたらごめんなさい.


Javaは文字コードとしてユニコードを使っているので,
目的の文字のユニコードが表示されようとしてるのではないでしょうか.

この回答への補足

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

まだ文字化けの原因がよくわからないのですが、

エンコードについては、
(1)サーブレット内で、
response.setContentType("text/html;charset=Shift_JIS");
(2)JSPファイルの<HEAD>内で、
<%@ page contentType="text/html; charset=Shift_JIS" %>
の2個所設定しています。


Bean内の文字列が文字化けしてしまうので、Bean内でもエンコードを設定する必要があるのでしょうか?

補足日時:2002/05/13 11:57
    • good
    • 0
この回答へのお礼

問題解決しました!

原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。

JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。

今回はどうもありがとうございました。

また何かありましたら宜しく御願い致します。

お礼日時:2002/05/13 14:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!