出産前後の痔にはご注意!

現在、Webアプリケーションを作っているのですが文字化けが起こってしまいます。

データを追加するときは問題なし
データを更新するときに発生

となるのですが、前者と後者で同じデータでも文字化けします。(この2つには相違点は必要部分以外はありません。)

更新の時には現データをフォームに表示させていますが、それが問題でしょうか?


(JSP内)
<input type="text" value="ゼロ" name="aaa" />
(Java内)
String name = request.getParameter("aaa")
System.out.println(name);
でデータを変更せず(しても)JSPで送信ボタンを押すとコマンドプロンプトには意味不明の文字列が出てきます

尚、全てのデータを拾うクラス(サーブレット)には
request.setCharacterEncoding("Shift_JIS");
JSPには
<%@page contentType="text/html; charset=ISO-2022-JP" pageEncoding="Shift_JIS" %>
をつけています。

開発環境
WindowsXP Home Edition
MySQL 4.0.26
Apache Tomcat 4.1

この原因や解決方法が分かれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんばんは myst_scientist さん



まず、はじめに JSP ファイルのコンテンツタイプで
指定している charset は ISO-2022-JP ではなくて
Shift_JIS でよいのではないでしょうか?
 ↓ これです ↓
<%@ page contentType = "text/html; charset=shift_jis" %>

それからサーブレット側で JSP ファイルで入力した
日本語を getParameter() メソッドで取得後、標準
出力などに出力すると文字化けが発生するとのこと
ですが、以下のように getBytes() メソッドで変換
して見てください。

String name = request.getParameter("aaa");
String sjisName = new String(name.getBytes("8859_1"), "JISAutoDetect");
System.out.println(sjisName);


"JISAutoDetect" で正しく Shift_JIS に変換され
ない場合は、"Shift_JIS" にして見てください。
 ↓ ↓ ↓
String sjisName = new String(name.getBytes("8859_1"), "Shift_JIS");

※申し訳ありませんが、現在確認できる環境が
 手元にないので検証できていません。

参考URL:http://www.geocities.jp/shirokaz99/java/java-jsp …
    • good
    • 0
この回答へのお礼

回答ありがとうございます
><%@ page contentType = "text/html; charset=shift_jis" %>

これに直したら成功しました。
今日中に解決して助かりました。

>String name = request.getParameter("aaa");
String sjisName = new String(name.getBytes("8859_1"), "JISAutoDetect");
System.out.println(sjisName);

コマンドプロンプトへの出力は追跡(どこで文字がおかしくなるか)のためにやっていたものなので大きな影響はありません(書いておくべきでした)。お手数をおかけしました。

お礼日時:2006/08/18 23:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング