- - PR -
servlet->jspで文字化け
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2002-09-26 18:40
こんにちは。
文字化けの原因がわからずにいます。どなたかご教授お願いします。 現象: servletでフォームから受け取った値をbeanにして、jspへfowardしています。 このとき、beanの値は正しく表示されるものの、jspに記述されている日本語が ?で文字化けします。 servletで「あいうえお」というStringをjspに送り、jspでchar配列にすると 3042 3044 3046 3048 304a と表示されています。 また、urlに直接jspを指定した場合は正常に表示されます。 環境:windows2000 jdk1.4 tomcat4.0.3 よろしくお願いします。 |
|
投稿日時: 2002-09-26 22:24
なにがなんだかさっぱり。
Java の String や char は Unicode です。3042 は「あ」のコードです。 文字化けしていません。 ちゃんと encoding 指定をした JSP でなら変換表示されるはずですが。 って JSP に <%@page contentType="text/html; charset=なんちゃら" %> を書いてないだけでは。 --- # なんでかなぁ、最近この手の初歩の初歩の質問が多い気がする。 # 腐った入門書でも流行ってるのかしら。 # さすがにこの程度は書いてあるよなぁ…。 |
|
投稿日時: 2002-09-27 09:39
説明不足で申しわけないです。
<%@ page contentType="text/html;charset=Shift_JIS" %> は記述してあり、ファイルもShift_JISで保存しています。 |
|
投稿日時: 2002-09-27 10:02
ブラウザ側のエンコードは何になっていますか。
|
|
投稿日時: 2002-09-27 10:02
こんにちわ。みーちくと申します。
私もJavaを始めてまだ、1ヶ月と立ってないので、 お役に立てるかどうかわからないのですが。 私も、JSP→Servlet→Beans→JSPという動きをやっております。 私の場合はEUC-JPですが。 JSPではしょむさんが、書いてあるように、↓を入れてます。 あと、metaタグも入れてます。 <%@ page contentType="text/html; charset=EUC-JP" %> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> ServletではgetParameterをするときに、文字のコード変換を行っております。 String xxx = new String(request.getParameter("xxx").getBytes("8859_1"),"EUC-JP"); 参考になれば良いのですが。 |
|
投稿日時: 2002-09-27 14:07
>このとき、beanの値は正しく表示されるものの、jspに記述されている日本語が ?で文字化けします。
JSPファイルの文字コードはどうでしょうか? > <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <%@ page contentType="text/html; charset=EUC-JP" %> で HTTPヘッダにcharsetパラメータが設定されるのでMETAタグは冗長で基本的には必要ないものだと思うのですが、ブラウザによっては、METAタグで指定しないと文字化けを起こすことがあるので記述しておきましょうという情報がWeb上で検索してみると数多くありました。 逆にはっきりとMETAタグは不要で、逆に記述することにより文字化けを起こすことがあると断言しているサイトもあります。 みなさんはServlet,JSPなどの動的に生成されるページで直接HTTPヘッダにパラメータを設定できる場合でもMETAタグによるcharset指定を行いますか。 |
|
投稿日時: 2002-09-27 14:34
とりあえず文字化けが解消しました。
パラメータを入力する最初のjpsで <jsp:include page="txtlib/aaa.txt" flush="true" /> としていたのですが、ここを <%@ include file="txtlib/aaa.txt"> にしたりして、ファイルを保存しなおしている間に解消しました。 aaa.txtの文字コード(はたぶんあっていたので改行コード)がおかしかったのかも しれません。 フレームを使っているのでブラウザのエンコードもShift_JISとなっており はっきりした原因はわからないのですが、出力ではなく入力に問題があったものと 思います。ちなみにmetaタグもつけていませんでした。 また何かわかったら報告したいと思います。ありがとうございました。 |
1
