- ベストアンサー
Bean→JSPでの文字化け
こんにちは。 質問したいことがあります。 JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。 文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に 発生します。 ----------------------例---------------------------------------- <jsp:useBean id="tBean" scope="session" class="test.testBean" /> <p>運勢は <em><%= tBean.getUnsei() %></em> です!</p> ------------------------------------------------------------------ ※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。 どう対処してよいか全く分かりません。 もし何か分かることがありましたらご教授御願い致します。
- みんなの回答 (3)
- 専門家の回答
お礼
問題解決しました! 原因は、Beanのメソッドから取得した文字列に対して、 str = new String(str.getBytes("8859_1"),"SJIS"); をしてなかった為に、文字化けが起こりました。 JSPファイルのBeanのメソッドから取得した文字列に対して、 この記述を加えるとうまく日本語(漢字含む)が表示されました。 今回はどうもありがとうございました。 また何かありましたら宜しく御願い致します。
補足
回答ありがとうございます。 説明不足で申し訳ございません。 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個所設定しています。