• ベストアンサー

MySQLで日本語が化けてしまいます。

yahooの知恵袋で聞いたのですが、こちらのがよいと聞いたのでこちらに質問させていただきます。 今MYSQLをつかって卒業研究をしています。JAVAから日本語のデータをデータベースに登録するのですが、2バイト文字であるとどうしても化けてしまいます。MYSQLで2バイト文字をつかうことは無理なのでしょうか。参考書を見たところ、漢字をつかっているのでつかうことはできると思うのですが、どうしたら使えるのでしょうか? 過去の質問で『Mysqlで文字化けします』と言うものが合ったので参考にして回答された方法を試したのですが依然文字化けしてしまいます。

  • MySQL
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

参考になるかはわかりませんが、以下が私のMy.iniです。 Win2000ですが、WEBに上げるのでLinuxにあわせてujisになっています。 #This File was made using the WinMySQLAdmin 1.4 Tool #2003/09/22 11:59:46 #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=C:/mysql #bind-address=192.168.0.1 datadir=C:/mysql/data #language=C:/mysql/share/your language directory #slow query log#= #tmpdir#= #port=3306 #set-variable=key_buffer=16M default-character-set=ujis [WinMySQLadmin] Server=C:/mysql/bin/mysqld.exe user=******** password=******** language=c:/mysql/share/japanese default-character-set=ujis [mysql] default-character-set=ujis [mysqldump] default-character-set=ujis [WinMySQLadmin] Server=C:/MYSQL/bin/mysqld-nt.exe コマンドプロンプトからMYSQLにログインしてみて、データを入れてみればどうなるでしょうか。 それでだめならMysqlのほうに問題があります。 > mysql -u root -p[Enter] > [パスワード入力][Enter] Mysql> use データベース とやって、SQL文を発行してやれば。

kojsan
質問者

お礼

moon_nightさんの具体例を参考にさせていただき、設定をさせていただきました。コマンドプロンプトから直接入力したら登録できました。どうやらJAVAの方で問題があるみたいです。 どうもありがとうございました。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

何を試したのかどうかは分かりませんが、一般的な回答をします。 OSがWINDOWSだと仮定します。(Linux系はわからない) my.iniの内容に default-character-set=sjis などを書き加えます。 ようは使用する文字を宣言してやるということです。 その場合はJAVAからの文字も合わせること。 WINならばsjis、それ以外ならばujis(EUC)にあわせれば大丈夫だと思われます。

kojsan
質問者

お礼

どうやら原因は別のところにも合ったようです。しかしSQLの問題は解決しました。ありがとうございました。

kojsan
質問者

補足

説明不足で申し訳ありません。OSはWINDOWSXPです。 参考になるかどうかは分かりませんが、以下はmy.iniのないようです。 #This File was made using the WinMySQLAdmin 1.4 Tool #2004/10/29 14:02:23 #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=F:/MySQL #bind-address=***.***.**.*** datadir=F:/MySQL/data #language=F:/MySQL/share/your language directory default-character-set=sjis #slow query log#= #tmpdir#= #port=3306 #set-variable=key_buffer=16M [WinMySQLadmin] Server=F:/MySQL/bin/mysqld-nt.exe user=***** password=***** [mysql] default-character-set=sjis [mysql-dump] default-character-set=sjis

関連するQ&A

  • PHP でMysqlを使用して日本語を登録する。

    すいません、教えて下さい。現在、PHPとMYSQLを連携させてデーターベースを構築中なのですが、日本語が登録できません。mysqlモニタにてinsert 文で登録すると日本語が登録できるのですが、phpを経由すると登録できないのです。phpから、既存のデータベースを呼び出すと日本語のところがすべて文字化けしてしまいます。ちなみにmysqlのmy.iniの設定はsjisにしてあります。ujisにするとmysqlモニタからでも日本語が登録できなくなります。どこの設定がいけないのでしょうか?ちなみにWindows Vista php5.1 mysql 5.1 です。

    • ベストアンサー
    • PHP
  • MySQLが文字化けしてしまう

    MySQLが文字化けしてしまう 現在、PHPとMYSQLを使ってデーターベースに画像をアップするプログラムを作っています。 http://websegment.net/2010/09/05/php-mysql-blob/ のサイトのプログラムでまず作成してみたところデーターベースへの 登録はうまくいったのですが、ターミナルでテーブルを確認したところ文字化けしていました。 フィールドのfile、size辺りで文字化けしてしまっているようです。 どうすれば、文字化けが直るのでしょうか? 教えてください。

    • ベストアンサー
    • PHP
  • MySQLの日本語の扱い

    MySQLデータベースにデータを書き込みする場合に「構」や「表」等 SJISコードの2バイト目が5Cの文字を書き込みするとエラーになってしまいます。回避する方法はありますか?(MYSQLのキャラクタセットはCP932を使用しています)よろしくお願いします。

  • MySQLからのデータ取得で日本語が文字化けします

    質問が削除されてしまったので、再々投稿します。 その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&amp;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に直接書かれた日本語は文字化けしません。データベースから取得した部分だけが 文字化けします。 この原因について何が考えられるでしょうか。

    • ベストアンサー
    • MySQL
  • Mysqlで日本語がどうしても非表示になります

    xampp for windows 1.7.0 apache 2.2.11 mysql 5.1.30 php 5.2.8 をインストールしました。 OSはwindowsXPです。 phpの基礎勉強を終え、MySQLでデータベースの作成の学習の途中なのですが、コマンドラインからデータベースを作成しselect*文でテーブル表示すると、日本語のデータがどうしても文字化けしてしまいました。 いろいろネット検索して試行錯誤した結果、status文で呼び出すと表示される各characterset(Server,DB,Client,Conn)ともにutf8にようやく統一できたようですが、文字化けこそしなくなったものの、今度は非表示(空白)になってしまいます。一応phpmyadminでもそのデータを表示させてみたのですがやはり非表示です。 一日やってどうにもならず、どなたかのお力をお借りしたいと思います。なにとぞご回答よろしくお願いいたします。

  • MySQL version 5.0.51とcseついて。

    MySQL version 5.0.51とcseついて。 cseというフリーのデータベース接続ツールを使用してMySQLに接続しているのですが、 その際、varchar(32)という項目に「あいうえおかきくけこ」を入力しようとすると 「あいうえおかきく」までしか登録されません。 データベースの文字コードはUTF8を設定しているので全角1文字3バイトだと思うのですが cseだと1文字4バイトで認識されているのでしょうか? この事象を調べている最中に、Oracleではvarchar(X)でXバイトだが、 MySQLだとX文字という記述を見つけ、そうだとしたら32文字登録可能なのに 8文字しか登録されない?? と迷走しております。どなたかご存知の方ご回答いただければ幸いです。

    • ベストアンサー
    • MySQL
  • mysql

    疑問があります。mysqlサーバーとmysqlクライアントとはなんですか? mysqlクライアントとはmysqlに接続するroot以外のユーザーのことを指すのでしょうか?サーバーはそのまんまサーバーのことですよね?? それと文字化け対策にmy.iniに skip-character-set-client-handshake と記述して解決できたのですが、これはサーバー側の文字コードをutf-8に設定しておけば、データベースの登録・参照などを必要として接続してくるユーザーの文字コードを無視してutf-8にしちゃうよっていうことなのでしょうか?

  • phpからMySQLへの日本語文字化けについて

    phpからMySQLへの日本語文字化けについて こんにちは。お分かりの方は教えてください。 現在、「ハッスルサーバー」を利用しwebのphpからMySQLサーバーへの 情報登録画面を作成しています。 登録内容で数値やメールアドレスなどの「1バイト文字」ですと 問題ないのですが、日本語の「2バイト文字」ですと文字化けが 発生してしまいます。 phpやMySQLに知識が無いため色々と調べて試したのですが 正しく登録できませんでした。 試した結果とサーバー/DBの状況は以下の通りです。 ※サーバー/DB ・バージョン:5.0.90-log ・文字セット:UTF-8 Unicode (utf8) ・接続照合順序:utf8_general_ci ・種別:MyISAM ・Variable_name:Value ・character_set_client:utf8 ・character_set_connection:utf8 ・character_set_database:utf8 ・character_set_filesystem:binary ・character_set_results:utf8 ・character_set_server:utf8 ・character_set_system:utf8 ・character_sets_dir:/usr/local/share/mysql/charsets/ ※phpファイルにて試した設定 //接続 $objCon = mysql_connect(C_SERVER, C_USER, C_PASSWORD); //文字コード // mysql_query("SET NAMES SJIS"); ←文字コードを左の2パターンで // mysql_query("SET NAMES UTF8"); ←どちらかに切り替えて実行しました。 //データベース $objSecDB = mysql_select_db(C_DB_NAME); //**********SQL(Insert)**********// $strSql = ""; $strSql = $strSql . "Insert Into XXXXX "; $strSql = $strSql . "("; $strSql = $strSql . "KeyNo,"; $strSql = $strSql . "E_Mail,"; $strSql = $strSql . "Title"; $strSql = $strSql . ") "; $strSql = $strSql . "Values "; $strSql = $strSql . "("; $strSql = $strSql . " " . mysql_real_escape_string($intKeyNo) . ", "; //KeyNo $strSql = $strSql . " " . mysql_real_escape_string($strEmail) . ", "; //E_Mail $strSql = $strSql . "'" . mysql_real_escape_string($strTitle) . "' "; //Title $strSql = $strSql . ")"; //SQL発行 $blnRet = mysql_query($strSql); ・上記のソース内に記しましたが文字コードを2パターン切り替えて  実行しましたが文字化けや空文字が登録されました。 どなたか対処方法をお分かりの方はお教えください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQL→PHPでデータリストを作ると文字化けが…

    MySQL→PHPでデータリストを作ると文字化けが起こるのですが、なぜでしょうか?METAはshift_jisで統一しているので問題ないはずですが、文字化けします。phpmyadmin上では文字化けせずに表示されるのでデータベース登録までは問題ないと思うのですが… よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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&amp;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で統一してますが、 それでも、???? のように文字化けします。 試せることは全てやってみましたがどうにも解決できません。 ご助力よろしくお願いいたします。