[Java] JDBCでMySQLにデータを追加すると文字化けする場合の対処法

JavaでJDBCを使ってMySQLを利用する際、INSERTでデータを追加したら登録したデータが文字化けしていました…

データベースは CHARACTER SET utf8 COLLATE utf8 として作成し、Java 内でも UTF-8 を使用しているので、文字化けが発生する原因が分かりませんでした。しかも、MySQLモニタ等であらかじめ登録してあるデータを読み出す際には文字化けが発生しません。 Java ➡ MySQL の時だけおかしくなるようです。

    ということで、調べてみましたが、JDBCでコネクションを取得する際に、文字コードを指定する方法があるようなので、試してみました。具体的には以下のようにします。

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con = DriverManager.getConnection(
      "jdbc:mysql:3306//localhost/sampledb?useUnicode=true&characterEncoding=utf8",
      "username",
      "password");
    

    これを試してみたところ…うまくいきました!文字化けしていません!
    でも何でJDBCのURLに文字コードの設定をしなくてはいけないのか、そしてなぜ読み出しでは文字化けしないのか、それはまだ分かりません…


    Pocket
    Bookmark this on Yahoo Bookmark

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>