- - PR -
サーブレットで文字化け
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-05 11:27
MySQLって接続文字列の後ろの部分で文字コード設定するんじゃなかったでしたっけ?
ここのページがわかりやすいかな。 http://www.dear-jpn.com/dear/wiki.cgi?page=MySQL+%A4%C8+Java | ||||
|
投稿日時: 2007-06-09 11:45
nagise様 ご回答ありがとうございます。
>MySQLって接続文字列の後ろの部分で文字コード設定するんじゃなかったでしたっけ? DriverManager.getConnectionを用いるとできると思いますよ。 APIのURL: http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/sql/DriverManager.html#getConnection(java.lang.String,%20java.util.Properties) 途中経過を報告します。 結論から言うとまだ、問題解決できません。 @char_test.javaの stmt = con.createStatement();と int kekka = stmt.executeUpdate(sql);の間に 以下のコードを追加してDBに登録する値をテキストファイルに書き出したところ ?と表示されました。DBに登録する以前に文字化けしてしまったことがわかりました。 //testStrの値を書き出し FileWriter fw = new FileWriter("kiroku.txt"); BufferedWriter bw = new BufferedWriter(fw); String buff = testStr; bw.write(buff); bw.newLine(); bw.flush(); bw.close(); fw.close(); コンパイルの仕方が悪いのでしょうか。 char_test.javaをFTPでサーバーに転送し LANG=ja_JP.Shift_JIS javac char_test.java というコンパイルしても見ましたが、文字化けはまだ直りません。 アドバイスいただけないでしょうかよろしくお願いします。 ADBに直接日本語入力できません。 管理者の方もまだ原因がわからないようです。 [ メッセージ編集済み 編集者: and1 編集日時 2007-06-10 09:56 ] | ||||
|
投稿日時: 2007-06-09 13:09
and1です。
追記ですが 以下の方法で試してもだめでした。 1.char_test.javaをEUC-JPで保存 2.javac -encoding EUC_JP char_test.java とコンパイル 3.FTPでchar_test.classをサーバーに転送 結果:char_test.classを実行しても文字化けは直りませんでした。 | ||||
|
投稿日時: 2007-06-09 17:31
ソースの文字コードを変更したぐらいで変わるなら・・
MySQLクライアントから \s 実行して結果を書いてみ | ||||
|
投稿日時: 2007-06-10 10:22
杏様
ご回答ありがとうございます。 \\sを実行しました。 何かわかりましたら、教えてください。 よろしくお願いします。 ------------status実行結果------------ Connection id: **** Current database: DB名 Current user: アカウント名@localhost SSL: Not in use Current pager: less Using outfile: '' Using delimiter: ; Server version: 4.1.18-log Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: sjis Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql.sock Uptime: 5 days 8 hours 47 min 12 sec ----------------------------------------------------- | ||||
|
投稿日時: 2007-06-10 11:59
MySQLの文字コードの誤認が発生してるかも
http://oss.timedia.co.jp/show/MySQL%C6%FC%CB%DC%B8%EC%A4%CE%CE%B9/%C0%DC%C2%B3%A5%AD%A5%E3%A5%E9%A5%AF%A5%BF%A5%BB%A5%C3%A5%C8%A4%CE%CA%D1%B9%B9 ↑が参考になるかも | ||||
|
投稿日時: 2007-06-10 16:25
杏様
早速のご回答ありがとうございます。 途中経過を報告します。 問題A DB登録 直接入力ではなくバッチ処理を使うと 直接DBに日本語文字を登録できました(select文で確認)。 しかし、show_test.classによってブラウザに登録データを表示しようとしても 相変わらず?で表示されます。 杏様に教えていただいたURLのページを参考に set names sjisというコマンドを入力して DBに日本語入力してshow_test.classを実行してみましたが 相変わらず?と表示されてしまいます。 問題がいくつかありますが、 少しでもわかることがありましたら ご回答よろしくお願いします。 | ||||
|
投稿日時: 2007-06-10 18:08
DB直接登録できたのであれば SET NAMES以外のもうひとつのは試す必要はありまん。
HttpServletResponse#setCharacterEncoding(java.lang.String)の設定は現在していますか? |