- - PR -
JSPアンケートフォーム (テキスト書き込み)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-12 22:38
ゼミナールでJSPを勉強していましてアンケートシステムを作っています。
文字化けが起こる問題とテキストに追記で書き込まれる設定のやり方がわかりません。 Windows XP Tomcat 4.1 java 1.42_05 HTMLフォームでテキストボックスを作り conf.jspで空白のテキストボックスがないかを判断し NGな場合はやり直し OKの場合はこの内容で送信してよいかと確認し write.jspでテキストに書き込まれるようになっています。 conf.jsp <%@ page contentType="text/html;charset=EUC-JP" import="java.io.*" %> <html> <head> <title>テキスト書き込みフォーム</title> </head> <body> <h2>送信内容確認画面</h2> <% //フォームの値を取得 String mName = request.getParameter("name"); String mFrom = request.getParameter("from"); String mTitle = request.getParameter("title"); String mNaiyou = request.getParameter("naiyou"); //値をチェック boolean mErrFlg = false; if (mName.equals("")) { out.println("<p>お名前を入力してください。"); mErrFlg = true; } if (mFrom.equals("")) { out.println("<p>メールアドレスを入力してください。"); mErrFlg = true; } if (mTitle.equals("")) { out.println("<p>タイトルを入力してください。"); mErrFlg = true; } if (mNaiyou.equals("")) { out.println("<p>内容を入力してください。"); mErrFlg = true; } if (mErrFlg == false) { %> <h2>内容を確認して送信ボタンをクリックしてください <form method="POST" action="write.jsp"> <table border="0"> <tr> <td width="100">お名前</td> <td width="300"><%=mName%></td> </tr> <tr> <td width="100">メールアドレス</td> <td width="300"><%=mFrom%></td> </tr> <tr> <td width="100">メールタイトル</td> <td width="300"><%=mTitle%></td> </tr> <tr> <td width="100">メッセージ</td> <td width="300"><%=mNaiyou%></td> </tr> <tr> <td colspan="2"><input type="submit" value="送信"></td> </tr> </table> <input type="hidden" name="name" value="<%= mName %>"> <input type="hidden" name="from" value="<%= mFrom %>"> <input type="hidden" name="title" value="<%= mTitle %>"> <input type="hidden" name="naiyou" value="<%= mNaiyou %>"> </form> <% } %> </body> </html> write.jsp <%@ page contentType="text/html;charset=EUC-JP" import="java.io.*" %> <html> <head> <title>テキスト書き込みフォーム</title> </head> <body> <h2>書き込み完了</h2> <% //フォームの値を取得 String mName = request.getParameter("name"); String mFrom = request.getParameter("from"); String mTitle = request.getParameter("title"); String mNaiyou = request.getParameter("naiyou"); //FileWriterオブジェクトを作成する FileWriter fw = new FileWriter(request.getRealPath("test.txt")); //BufferedWriterオブジェクトを作成する BufferedWriter bw = new BufferedWriter(fw); //ファイルに文字列を書き込む bw.write(request.getParameter("name") + "\r\n"); bw.write(request.getParameter("from") + "\r\n"); bw.write(request.getParameter("title") + "\r\n"); bw.write(request.getParameter("naiyou") + "\r\n"); //BufferedWriterオブジェクトを閉じる bw.close(); %> </body> </html> 解決方法を教えて頂きたいです。 またこのようにしたほうがよいなど アドバイスして頂けると非常にうれしいです。 よろしくお願いします。 | ||||||||
|
投稿日時: 2004-11-12 23:59
わたしはServlet/JSP関係はド素人ですので間違いの折はご容赦を。
seven-starさんが書かれたソースはどのエンコードで保存されてますか? EUC_JP以外でエンコードされていれば、それをcharsetに指定しましょう。 テキスト(ファイル)への追記(データの追加)をする場合には、 public FileWriter(String fileName,boolean append) コンストラクタを用いると簡単です。 appendのあたいをtrueにすればデータが追加で書きこめます。
恐らくServlet/JSPでは「文字化け」問題は最も情報量の多い 事項の1つではないかと思います。 Google等で「JSP 文字化け」で検索すれば殆どの解答は得られ るのではないでしょうか。 | ||||||||
|
投稿日時: 2004-11-13 01:15
レスありがとうございます。 すべてのJSPにてcharset=EUC-JPで設定しているのですが 文字化けが起こってしまっている状況です。 ちなみにHTMLのほうもEUC設定にしました。 テキストに書き込まれる際に文字化けが発生していると いまのところ思っているのすが詳しくわかりません。 日本語の場合?などの文字になってしまいます。 追記の件はAPIと色々自分で研究をしてみたいと思います。 アドバイスしていただきありがとうございます。 | ||||||||
|
投稿日時: 2004-11-13 02:05
以下のページを見てどこからどこへ文字が渡されるときに
文字化けが起こるのか考えてみると分かりやすいかも。 私はだいぶこのページのお世話になりました。 http://www.atmarkit.co.jp/fjava/rensai2/webopt08/webopt08.html | ||||||||
|
投稿日時: 2004-11-13 02:12
ってことは、文字化けってクライアント側のブラウザ上での文字化けではなく、 ファイルに書きこんだ時の文字化けってことなんですね。 で、seven-starさんのソースを見る限り、FileWriterを使ってますから ファイルへの書き出しにはOSのデフォルトの文字コードが使われる事になります。 自分が望む文字コードを指定してファイルに書きこむにはOutputStreamWriter クラスを使って見て下さい。 File file = new File(request.getRealPath("test.txt")); FileOutputStream fos = new FileOutputStream(file,true); OutputStreamWriter osw = new OutputStreamWriter(fos,"EUC_JP"); BufferedWriter bw = new BufferedWriter( osw ); こんなところでしょうか、、、確認してないけどw それでも尚文字化けがあるようならば、request.getParameter()での文字列取得時 のエンコードが上手くいっていない可能性が在るので、その部分の処理を加えてあげ れば上手くいくのでは無いかと思います(たぶん、、、) 恐らく、request.setCharacterEncoding() を使う事で解決するのではないかと。 | ||||||||
|
投稿日時: 2004-11-13 03:24
私もtakamaroさんのとおりだと思います。
jspファイルの一番最初の所にrequest.setCharacterEncoding("euc_jp") をセットすれば OKです | ||||||||
|
投稿日時: 2004-11-14 00:38
追記でテキストに書くことができました。 文字化けはやり方が悪いのかTOMCATの設定が悪いのか まだ改善できませんがひとまず前進したのでとても うれしいです。 夜遅くにレスしていただき有難う御座いました。 |
1