こんにちは。
質問したいことがあります。
JSPで定義した全角文字列はそのままブラウザに表示されるのですが、Bean内で定義した全角文字が文字化けをしてしまいます。
文字化けは、JSPファイルからBeanのメソッドを使ってパラメータを取得する際に
発生します。
----------------------例----------------------------------------
<jsp:useBean id="tBean" scope="session" class="test.testBean" />
<p>運勢は <em><%= tBean.getUnsei() %></em> です!</p>
------------------------------------------------------------------
※getUnsei()はBean内で定義された全角文字を取得するメソッドで、このメソッドで取得した文字列が文字化け(?が多数出力される)します。ちなみに「運勢は」と「です!」という文字列は、そのまま文字化けせずに出力されます。
どう対処してよいか全く分かりません。
もし何か分かることがありましたらご教授御願い致します。
No.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個所設定しています。
問題解決しました!
原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。
JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。
今回はどうもありがとうございました。
また何かありましたら宜しく御願い致します。
No.2
- 回答日時:
質問を読むかぎり、Beanのコンパイル時にミスってる
以外に考えられないです。
Beanのソースコードのエンコーディングと、
コンパイルした環境のデフォルトのエンコーディングが
異なっている、ということはないですか?
この回答への補足
回答ありがとうございます。
Beanについてですが、ソースコードに
<meta http-equiv="Content-Type" content="text/hmtl;charset=Shift_JIS">
や
<%@ page contentType="text/html; charset=Shift_JIS" %>
のようなコンテントタイプやキャラセットは設定していません。
サーブレットやJSPだけでなく、Beanにも設定する必要があるのでしょうか?
ちなみに雑誌のサンプルコードをそのまま使っているのですが、
雑誌のサンプルコードのBeanの部分にはコンテントタイプやキャラセットは設定されていませんでした。
問題解決しました!
原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。
JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。
今回はどうもありがとうございました。
また何かありましたら宜しく御願い致します。
No.1
- 回答日時:
はずしていたらごめんなさい.
Javaは文字コードとしてユニコードを使っているので,
目的の文字のユニコードが表示されようとしてるのではないでしょうか.
この回答への補足
回答ありがとうございます。
まだ文字化けの原因がよくわからないのですが、
エンコードについては、
(1)サーブレット内で、
response.setContentType("text/html;charset=Shift_JIS");
(2)JSPファイルの<HEAD>内で、
<%@ page contentType="text/html; charset=Shift_JIS" %>
の2個所設定しています。
Bean内の文字列が文字化けしてしまうので、Bean内でもエンコードを設定する必要があるのでしょうか?
問題解決しました!
原因は、Beanのメソッドから取得した文字列に対して、
str = new String(str.getBytes("8859_1"),"SJIS");
をしてなかった為に、文字化けが起こりました。
JSPファイルのBeanのメソッドから取得した文字列に対して、
この記述を加えるとうまく日本語(漢字含む)が表示されました。
今回はどうもありがとうございました。
また何かありましたら宜しく御願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VBA Evaluate関数 型が一致しま...
-
エクセルVBAで、条件に一致する...
-
同一パッケージにあるクラスが...
-
「天声人語」をインターネット...
-
配列の重複する値とその個数を...
-
インスタンス参照でアクセスで...
-
エクセルのマクロでプリンタを...
-
Javaのメモリの管理
-
変数名の付け方
-
同じクラスにならない確率を教...
-
Labelコントロールの背景をグラ...
-
C#において、同じインスタンス...
-
C#でフォームのオブジェクト名...
-
eclipseのパッケージって何?
-
レコード件数の表示
-
オブジェクト指向プログラミン...
-
C#でほかのファイルにある自作...
-
エクセルVBAにおけるON TIMEメ...
-
シーケンス図について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
時間の取得
-
VB.Net Object型 空かどうか
-
数字か文字列かを判定する関数
-
連続する「\\」をひとつの「\\...
-
String型の日付(2005/11/25)の...
-
VBA Evaluate関数 型が一致しま...
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
文字列が数字のみで構成されて...
-
Timestamp型への変換について(J...
-
例外ってIf文の中に入れますか...
-
全角スペースのチェックについて
-
ファイルダイアログを開いた時...
-
C# マルチスレッドにおける例外...
-
VBA 400エラー 1004エラー
-
C#の捕捉されない例外処理の対...
-
nullで、return出来るのはどん...
-
C# UriFormatExceptionの回避
おすすめ情報