質問が削除されてしまったので、再々投稿します。
その1、その2に分けて投稿していたため、削除されてしまいました。
その1の内容のみ投稿します。
現在、データベースにMySQLを使ってJavaでWebアプリケーションを作成しています。
使用環境は以下の通りです:
OS: Windows XP
Java: 5.0
Tomcat: 4.1.31
MySQL: 4.1.7
MySQL Connector/J: 3.0.16
しかしデータベースに日本語のデータを登録し、アプリケーションからデータを読み
出すと必ず文字化けしてしまいます。
JavaアプリケーションからMySQLへ接続する際のURLでは、以下のようにパラメータ
で文字コードを指定しています。
jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=Shift_JIS
これをTomcatの設定ファイル(server.xml)の<Context>/<ResourceParams>の中で指定
しています。
また、MySQLの設定ファイル(my.ini)の中でもデフォルト文字セットを以下のように
指定しています。
default-character-set=sjis
ちなみにJava側からは以下のようにしてデータを取得してきています。
Connection db=null;
PreparedStatement objPs=null;
ResultSet rs=null;
try{
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
db=ds.getConnection();
objPs=db.prepareStatement("SELECT * FROM bok_inf_tbl ORDER BY published DESC");
rs=objPs.executeQuery();
・
・
・
JSPの先頭では、以下のようにpageディレクティブを記述しています。
<%@ page contentType="text/html;charset=Shift_JIS" %>
JSPに直接書かれた日本語は文字化けしません。データベースから取得した部分だけが
文字化けします。
この原因について何が考えられるでしょうか。
No.1ベストアンサー
- 回答日時:
私も以前同じ現象で困りました。
原因はMySQLの4.1.7バージョンにあるらしいです。
どうしても4.1.7バージョンにこだわるなら以下のコードで対応出来たと思われます。
str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect");
※str:MySQLから取得して文字化けしてしまうresultsetの項目
ちなみに私はMySQL4.0.21にバージョンダウンして、4.1.7の不具合対応がされるまで待っている状態です。
この回答への補足
b-u-z-zさん、ありがとうございます。
str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect");
この方法で文字化けを回避することができました。
しかし、特定の文字(表、ソなど)が文字化けする問題は解決しませんでした。
http://www.kent-web.com/pubc/jcode/
ここに書いてある問題です。
これはShift_JIS特有の問題であると思われるので、MySQLの文字コードをEUCに変更してみました。
そうすると今度は(表、ソ)などの文字も文字化けせずに表示できました。
ResultSet#getString()で取得した文字列に対して
str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect");
といった変換も不要になりました。
ただ、MySQLのコマンドラインクライアントを使ってSELECT文でデータを表示すると日本語は文字化けします。コマンドプロンプトの文字コードがEUCに変更できないからです。
ちょうど昨日、MySQL Query Browserの一般提供が開始されたそうです。これを使うと文字化けしません。
英語版ですがなかなか使いやすいです。
残念なのは、クエリーを入力するところでは日本語が使えないことです。
ありがとうございました。
結局私もバージョンダウンすることにしました。
そうすることで問題なく動きました。
うまくいった環境は以下です:
OS:Windows XP ServicePack 2
Java:1.4.2_06
Tomcat:4.1.31
MySQL:4.0.22
MySQL Connector/J:3.0.16
かねやんMySQLAdmin(SJIS版):1.43
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 私の考えていることは ・mySQL ・PHP ・web制作 この三つのスキルがあれば実現しますか? 4 2023/08/19 02:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
MySQLの文字化け
-
mysql データベースを別のサー...
-
mySQLのデータベースにhtmlのコ...
-
データベースの複製の仕方(mysql)
-
バッチファイルではパスワード...
-
文字化けしたデータベース名・...
-
SQLServerのselect文でデータ数...
-
ロータスアプローチでデータ連...
-
MySQL操作はCUI派、それともGUI派
-
MySQLからのデータ取得で日本語...
-
html上でMySQLにアクセス(Java...
-
MySQLのダンプの入れ替えについて
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
sql*loader 数値のロード
-
PL/SQLをWindowsのBATファイル...
-
mysqlにおけるホストのパーセン...
-
数字で「そ」と「り」
-
同じSQL文で極端に検索が遅くな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
html上でMySQLにアクセス(Java...
-
SQLServerのselect文でデータ数...
-
バッチファイルではパスワード...
-
mySQLのデータベースにhtmlのコ...
-
htmlタグを含んだ文字のデータ...
-
どの程度のデータベースなら、c...
-
データベースの複製の仕方(mysql)
-
Mysqlのデータベースのリンク
-
私の考えていることは ・mySQL ...
-
MySQL4.1以上で、機種依存文字...
-
データベースに配列を格納する
-
ロータスアプローチでデータ連...
-
データベースに画像を入れた場...
-
firebird,SQLトレーナーの使い方
-
sql merge文について
-
MYSQL で検索した結果を印刷したい
-
MySQL データベースをデタッチ
-
MySQLからのデータ取得で日本語...
-
mysqlデータベース内のuserテー...
おすすめ情報