• 締切済み

JAVAでMySQLに接続すると日本語が化ける

似たような質問がいくつかありますが、どれも解決には至らなかったため質問させていただきます。 以下のような環境でMySQLにレコードを追加するプログラムを作成しましたが、どうしても日本語が文字化けします。 解決方法をご存知の方、心当たりのある方は、何卒ご教授お願いします。 MySQLの使用文字コードの設定は下記の通りです character_set_client: utf8 character_set_connection: utf8 character_set_database: utf8 character_set_filesystem: binary character_set_results: utf8 character_set_server: latin1 character_set_system: utf8 データベースおよびテーブルは下記のように作成しました create database test default character set utf8; create table test ( text text ); Javaのソースコードは以下です import java.sql.*; public class MySQL {  public static void main(String[] args) {  try {   Class.forName("com.mysql.jdbc.Driver");   Connection db = DriverManager.getConnection("jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8", "root", "");   Statement sql = db.createStatement();   sql.execute("use test;");   sql.execute("insert into test values('ほげほげ');");   ResultSet results = sql.executeQuery("select * from test");   db.close();  } catch (Exception e) {   System.out.println("can't connect the database (" + e + ")");  } } } これを以下のように実行します $ javac -encoding UTF-8 MySQL.java $ java -Dfile.encoding=UTF-8 MySQL これでもかというぐらいUTF-8で統一してますが、 それでも、???? のように文字化けします。 試せることは全てやってみましたがどうにも解決できません。 ご助力よろしくお願いいたします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.5

これで日本語入力できるようになりませんか。 http://curiousabt.blog27.fc2.com/blog-entry-65.html

vemras
質問者

補足

ご回答ありがとうございます。 返信が遅れて申し訳ありません。 教えていただいたサイトは既に参照し、 日本語入力を試みましたができませんでした。 ただ、試行錯誤を繰り返し、なんとか入力/表示は可能になりました。 ターミナルからinsert すると正常になります。 しかし、プログラムからだと文字化けの形式は変わったものの、正常に表示はされないままです。

回答No.4

普段はLinux使いですが、Macの方は見たことはあるけど使ったことは無いので、「一般人」で。 補足欄を見る限り、原因はJavaやMySQLではなくMacの方みたいですね。 Mac : Terminal(ターミナル)の日本語環境設定 http://groundwalker.com/blog/2007/05/mac_japanized_terminal.html Mac OS X ターミナルでの日本語の扱いについて http://homepage3.nifty.com/toshi3/osx2t.html 最新の5.0.85をインストールする前に、取り敢えずは上記のサイトを元にターミナルから日本語の表示や、日本語の入力などができるようにすべきかと。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

確認ですがターミナルからのmysqlコマンドでinsert,selectした場合は文字化けはおきないのでしょうか? 後、お使いのMySQLのバージョンは何ですか?

vemras
質問者

補足

ご回答ありがとうございます。 MySQLのバージョンは5.0.82でした。 Terminalに日本語が入力できないので、 コマンド入力を試すことが出来ませんでした。 (色々試したのですが、どうも入力できません)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

> character_set_server: latin1 が気になります。 my.cnfの[mysqld]セクションで character-set-server = latin1 collation-server = latin1_general_ci になっていませんでしょうか。なっていたら削除して default-character-set = utf8 に変更してみては。

vemras
質問者

補足

ご回答ありがとうございます。 ローカル環境で実践していますので、character_set_server はあまり関係の内容がないと考えていました。 my.cnfは予め以下のように書いてあります。 にも関わらずcharacter_set_serverは変わりませんでした。 [mysqld] default-character-set = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8

noname#94983
noname#94983
回答No.1

ものすごく初歩的なことで申し訳ないが……。これは、Windowsだろうか。だとすると、コマンドプロンプトから実行しているんだろうか。コマンドプロンプトは文字コードがMS932(SJIS)だから、UTF-8の文字はそのまま出力すれば文字化けすると思うが……。 あるいは、Eclipseなどを使っているのだろうか。とすると、コンソールの文字コードはちゃんとUTF-8になってるだろうか。 そのへんが問題ないとすると、例えばEclipseのデータソースエクスプローラーとか、あるいはphpMyAdminとかいったMySQLの管理ツールを使ってデータの作成や表示などを確認してみるとヒントになるかも知れない。

vemras
質問者

補足

ご回答ありがとうございます。 情報不足で申し訳ありませんでした。 Macのターミナル上で動かしています。 ターミナルの表示文字コードはUTF-8です。 ターミナルの文字コードがUTF-8で、 mysql> select * from test とやって文字化けしているので、 やはりDBへの格納に失敗してるのでないかと考えてます。

関連するQ&A