• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLからのデータ取得で日本語が文字化けします)

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

b-u-z-zの回答

  • ベストアンサー
  • b-u-z-z
  • ベストアンサー率20% (1/5)
回答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の不具合対応がされるまで待っている状態です。

Prune1976
質問者

お礼

ありがとうございました。 結局私もバージョンダウンすることにしました。 そうすることで問題なく動きました。 うまくいった環境は以下です: 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

Prune1976
質問者

補足

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の一般提供が開始されたそうです。これを使うと文字化けしません。 英語版ですがなかなか使いやすいです。 残念なのは、クエリーを入力するところでは日本語が使えないことです。

関連するQ&A

  • MySQLが文字化けしてしまう

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

    • ベストアンサー
    • PHP
  • MySQLで日本語が化けてしまいます。

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

    • ベストアンサー
    • MySQL
  • MySQLの文字化け

    Win XP MySQL4.0.13 TOMCAT4.1 APACHE2 以上を使用して自宅にて開発を行っております。 HTMLページより入力されたデータをjspファイルへ渡し、jspファイル内へ記述されたSQL文によりデータベースへの書き込みを試みております。 データベースへの書き込み自体はできるのですが、文字化けで困っています。 書き込み後、プロンプトよりselect文で確認すると、日本語のみ文字化けし、アルファベットは大文字が小文字にところどころなってしまいます。数字は問題ありませんでした。 具体的には「あいうえお」が「BDFHJ」に文字化けしていました。 MySQLのコンソールのMY.ini Setuoタブに [mysqld] default-character-set=sjis [mysql] default-character-set=sjis と指定しており、HTML,jspファイル内でもshift-jisを指定しております。 ご教授よろしくお願いしたします。

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

  • mysql文字化けについて

    どうしても自己解決できません。宜しくお願いします。 sqliteで色々できるようになり、いざmysqlに移行と思いデータを mysqlに移そうとしています。ところが日本語がデータベース内で文字化けしています。 sqliteでは文字コードを変えると大丈夫だったのですが。 $simei=mb_convert_encoding($_POST[simei],"EUC-JP","SJIS"); musqlには「照合順序」というのがあり、よく意味が分からないのですがこれが文字コードを設定するところと思い、そこで「ujis_japanese_ci」と言うのに設定してみたり、sjisにしてみたり色々試したのですがやはりデータベース内では文字化けしています。 どのようにすればデータベース内に保存された日本語文字が文字化けしないで保存されるのでしょうか。宜しくご指導お願いいたします。

    • ベストアンサー
    • PHP
  • javaでMySQLのデータ検索

    以下のサイトでただいま勉強しています。環境はMySQL4.0.15です。 http://msugai.fc2web.com/java/JDBC/mmMySQL.html ●JDBC ソースコードのところでつまづいています。 javaの実行 C:\java>java JdbcSample Exception: com.mysql.jdbc.Driver java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  … // 1.JDBC Driver の登録 // 2.データベースへの接続 のあたりでエラーが発生している状態です。データベースの接続はAccess環境なら『コントロールパネル』→『管理ツール』→『データソース(ODBC)』で使用するデータベースを設定します。MySQLもこのあたりの設定が必要なんでしょうか? ●Accessの場合 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection Con = DriverManager.getConnection("jdbc:odbc:設定したデータベース名"); アドバイスお願いします。

  • mySQLデータベースに書き込むと文字化けをする

    すみませんタイトルにある通りなのですが、データベースはmySQLを使用していて、 コマンドプロンプトからinsertコマンドなどで書き込んだ後に、テーブルの内容を 表示すると、文字化けをしていることがあります。 対策はあるのでしょうか?日本語の一部は必ず文字化けをしてしまうのですか? 同時にweb(自作のアプリケーション)からデータベースに書き込む時も同様の現象が起こってしまいます。 文字コードの指定方法で解決できると思うのですが、わからないのですよろしくお願いします。

  • perlのDBIモジュールからmysqlへデータを送ったら文字化けします。

    こんにちは。 タイトル通り、perlのDBIモジュールからデータベース(mysql)にデータを渡してみたのですが(INSERT INTOです。)phpmyadminというDB管理ツールでテーブルの内容を見てみると、文字化けしてました。 フォームより受け取った値(文字列です。もっというと名前)をCGIでデータベースへ追加するといったことをしています。ソースは以下のとうりです。 require 'cgi-lib.pl'; my %formin; &ReadParse(\%formin); $sei=$formin{'sei'}; $mei=$formin{'mei'}; あとはこの変数をDBIでデータベースに渡すだけなので略します。 データベースへデータを渡したとき、文字化けさせないためには、どうしたらいいのでしょうか? 初歩的なことかもしれませんが、どうかお力を貸してください。お願いします。

    • ベストアンサー
    • MySQL
  • mysqlから取得した文字の文字化け

    mysqlでchar(20)に日本語を登録しました。 mysql上では当然select KUDAMONO from SHOHI_TABLE;とすると みかん りんご かき いちご というようにコマンドプロンプト上で表示されます。 このデータをjavaでで取得すると文字化けを起こします。 while(rset.next()){ System.out.println(rs.getString("KUDAMONO")); } 半角データの場合はgetString("列名")で文字化け起こしません。 数字データについてもgetInt("列名")で文字化け起こしません。 原因はなんでしょうか?

    • ベストアンサー
    • Java
  • 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