• ベストアンサー

EclipseでのJSP・Servlet開発について(文字化け)

EclipseでJSP、Servletの開発をしております。 文字化けについての質問なのですが、ブラウザ上で表示される文字が 文字化けしてしまいます。JSPの頭に <%@page contentType="text/html; charset=SHIFT_JIS"%> と入れており、ブラウザでもエンコードはShift_JISとなっています。 自分なりに原因を調べたのですが、○○.jsp→○○_jsp.javaに変換?する際に 文字化けしているようで、Eclipse上でJSP、Servletを見ると普通なのですが、 ○○_jsp.javaは見事に文字化けしていました。 文字化けした○○_jsp.javaを削除して再度表示(_jsp.javaの再作成)も試みた のですが、同じ結果でした。 1ヶ月以上触っていないパッケージのソースも突然文字化けを起こしたので 原因も分からない状態です。 原因・直し方がお分かりの方、是非ともご指南下さい。 情報不足でしたら追記させて頂きますので、どうぞ宜しくお願い致します。

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

  • ベストアンサー
  • DMXbw
  • ベストアンサー率66% (4/6)
回答No.2

Eclipseの文字コードの設定は、これから作成するファイルに関しては 「ウィンドウ->設定->一般->ワークスペース」で 「テキスト・ファイル・エンコード」にて指定できます。 ただし、これだとすでに作成したファイルの文字コードは変更されないため、 対象ファイルを右クリックし、「プロパティ->リソース」で変更できます。 >テキストエディタで開くと文字化けしていないのに、何故かEclipseで開くと文字化けし、稀に(きっかけは不明だが)ブラウザ(FireFox)上でも文字化けした状態で表示される。 これも上記で設定すれば解決すると思います。 テキストエディタは何を使っているのかわからないですが、テキストエディタ側ではShift-jisで読み込んで、EclipseではUTF-8?で読み込んでいるために起きているのが原因だと思います。 ちなみに、JSPをインクルードする際、インクルードされるJSPに <%@ page pageEncoding="SHIFT-JIS" %> を指定しないと文字化けする可能性があります。(インクルードする側とされる側両方にContentTypeをしていすると、される側のContentTypeは無効化され、される側の文字コードを判断する手立てがなくなってしまうため)

yukikage_p
質問者

お礼

ご親切に色々調べて下さり、ありがとうございました。 補足なども含め、参考にさせて頂き解決しました。 まことにありがとうございます。

その他の回答 (2)

  • DMXbw
  • ベストアンサー率66% (4/6)
回答No.3

#2です。 すみません。自分で試して見たのですが前の回答だけでは解決しませんでした。 そこで少し調べてみました。 jspからjavaファイルに変換されたものをEclipseで開くと文字化けするのはjavaファイルがUTF-8で作成されているのが原因です。(デフォルトではUTF-8で作成するため) Windowsで作成していてEclipseの文字コード設定をいじっていない場合はテキスト・ファイル・エンコーディングはMS932もしくはWindows-31Jになっていると思います。 そのため、EclipseではMS932で開こうとしてもファイルはUTF-8なので文字化けが起きてしまいます。 テキストエディタで開いた場合は自動で文字コードを認識しているため文字化けが起きていないのだと思います。 対処方法としては最終的にShift-jisで表示したい場合、それに統一すればいいと思います。 Eclipseの設定は前の回答に書いたとおりです。 あとはTomcatでjspからjavaを作成するときの文字コードを以下のようにして設定します。 %TOMCAT_HOME%\conf\web.xml <servlet> <servlet-name>jsp</servlet-name> ======省略====== <load-on-startup>3</load-on-startup> </servlet> の箇所に <init-param> <param-name>javaEncoding</param-name> <param-value>Shift-jis</param-value> </init-param> を追加します。 何度かやってるうちに文字化けしてしまう現象に関しては試していませんが、おそらくこれで解決すると思います。

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

Eclipseのテキストファイルエンコードは何ですか? UTFとかになってませんか? よくわからなければ、メモ帳でjspファイルを開いて名前をつけて保存のとこにでてくる文字コードがUTFとかになってませんか? もしそうなら、ファイル自体がSJISでないので、charsetも変更する必要があります。

yukikage_p
質問者

お礼

解決への糸口となりました。 ありがとうございました。

yukikage_p
質問者

補足

早速のご解答ありがとうございます。確かに『メモ帳でjspファイルを開いて名前をつけて保存のとこにでてくる文字コードがUTFとかに』なっていました。 どのように設定するのでしょうか? また、質問を追記させて頂きます。 >>自分なりに原因を調べたのですが、○○.jsp→○○_jsp.javaに変換?する際に >>文字化けしているようで…(略 この後気付いたのは、「テキストエディタで開くと文字化けしていないのに、何故かEclipseで開くと文字化けし、稀に(きっかけは不明だが)ブラウザ(FireFox)上でも文字化けした状態で表示される。」 事です。 ○○_jsp.javaを削除し、再ビルドしたばかりの時などは、Eclipse上では文字化けしていますが、ブラウザでは正しく表示されたりもします。 何度かやっていくうちにEclipseで見えるような文字化けがブラウザでも出てしまうのです。 現在は単体テスト段階なのですが、_jsp.javaをテキストエディタで表示してエラー部分を確認している状態です。 引き続き何かご存知でしたら、宜しくお願い致します。

関連するQ&A