• 締切済み

MySQL5の文字化けについて(Linux)

MySQL5の文字化けについて linuxもデータベースも初級の素人です。 my.iniをデフォルトのままwindowsからTeraTermでサーバに接続し SQLを発行していたのですが、そのときは日本語が文字化けしませんでした。 しかしphpmyadminを利用しようとmy.iniを変更すると、変更したが為に日本語文字化けするようになってしまいました。 修正後はMySQLは再起動しており、再起動後、新たにテーブルを作成し、 データの挿入をしてテストしています。それでもうまくいきません。 修正後のmy.iniのどこがおかしいのでしょうか? [サーババージョン] OS:CentOS5.4 (OSの文字コード:UTF-8のまま変更なし) MySQL5.0.77 [テスト環境] windowsマシンからTeraTermProでログイン ・TeraTermの設定:文字コード送受信ともに「UFT-8」を指定 ****************** [ 変更前のmy.ini ] *********************** [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 user=mysql [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid *************************************************************** ****************** [ 変更後のmy.ini ] *********************** [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set=utf8 init-connect=SET NAMES utf8 (←これがいるのがよく分からない) skip-character-set-client-handshake [mysql.server] user=mysql basedir=/var/lib [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 [client] ← (これもいるのかよく分からない) default-character-set=utf8 ************************************************************* ********* TeraTermで接続しSQLを発行したときのSQL文 ********** mysql> create table account (ID integer primary key, NAME varchar(100), MONEY varchar(100) ); mysql> insert into account values (1,'ボブ',1000), (2,'パトリック',2000), (3,'サンディー',3000), (4,'イカルト',4000) ; ************************************************************* かなりテンパってます。。 よろしくお願いします。

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

みんなの回答

回答No.3

先ほどの回答者 (orange1024) です. 訂正します.ごめんなさい 要点 cp932 と書いたのは、正しくは utf8 <訂正前> CREATE DATABASE `test9` DEFAULT CHARACTER SET cp932 COLLATE utf8_general_ci <訂正後> CREATE DATABASE `test9` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

回答No.2

思いつきで回答します.ごめんなさい (MySQL バージョン 5.1 を使っているので, 5.0 での挙動が確認できないのです.5.0 と 5.1 では挙動が違うので,回答が憶測に止まります) CREATE DATABASE `test9` DEFAULT CHARACTER SET cp932 COLLATE utf8_general_ci のように明示的に utf8 を指定し, データベースを新しく作り, この新しいデータベースで同じ症状が再現するか?  で問題の箇所を限定できる可能性があります. (すでに試しているのならごめんなさい)

参考URL:
http://www.db.is.kyushu-u.ac.jp/rinkou/mysql/code.html
  • JV44
  • ベストアンサー率50% (24/48)
回答No.1

まずはクライアントから 「SHOW VARIABLES LIKE 'character%'」 を入力して、実際のMySQLの文字コードの設定値を確認して下さい。

tastykk
質問者

補足

このようになっています。 +--------------------------+----------------------------+ | 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/share/mysql/charsets/ | +--------------------------+----------------------------+

関連するQ&A

  • FedoraCore4のMYSQLについて

    下記のエラーがでてしまい起動出来ません。 Timeout error occurred trying to start MySQL Daemon. 一度アンインストールして後に再インストールしても同じエラーで起動出来なかったです。勿論、アンインストールする再にフォルダ部分も削除しました。 [root@test ~]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysql.server] user=mysql basedir=/var/lib default-character-set = utf8 [mysqld_safe] err-log=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set = utf8 --------------------------------------

  • Mobavle type 文字化け

    質問です。 Mobavle typeをsjisにしようと、my.cnfを下記の用にしましたが、 管理画面の前のログインボタンページだけutf-8で文字化けしています。 解決方法を教えてください。 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set=sjis skip-character-set-client-handshake # To allow mysqld to connect to a MySQL Cluster management daemon, uncomment # these lines and adjust the connectstring as needed. #ndbcluster #ndb-connectstring="nodeid=4;host=localhost:1186" [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [ndbd] # If you are running a MySQL Cluster storage daemon (ndbd) on this machine, # adjust its connection to the management daemon here. # Note: ndbd init script requires this to include nodeid! connect-string="nodeid=2;host=localhost:1186" [ndb_mgm] # connection string for MySQL Cluster management tool connect-string="host=localhost:1186" [client] default-character-set=sjis [mysqldump] default-character-set=sjis [mysql] default-character-set=sjis #language=japanese 以上です。 httpd.confもAddDefaultCharset Shift_JISにせっていしてあります。 画像を用意しました。

  • MySQLが起動しない

    このテーマの質問はいくつもあるのですが、解決に結びつくものがなく困っています。 もともと正常に動いていたのですが、再インストールしたところ起動しなくなりました。 再インストールは「yum -y install mysql-server」で行いました。 いろいろと試してはいるのですがうまくいきません。 どなたかお分かりの方がいらっしゃいましたら、ご教授いただけますでしょうか。 よろしくお願いします。 --------------------------  エラーログ -------------------------- 110709 16:46:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 110709 16:46:38 [Note] Plugin 'InnoDB' is disabled. 110709 16:46:38 [Note] Plugin 'FEDERATED' is disabled. 110709 16:46:38 [ERROR] Unknown/unsupported storage engine: InnoDB 110709 16:46:38 [ERROR] Aborting 110709 16:46:38 [Note] /usr/libexec/mysqld: Shutdown complete 110709 16:46:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended --------------------------  my.cnf -------------------------- [mysqld] skip-innodb max_connections=30 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock bind-address=127.0.0.1 # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 [mysql.server] user=mysql sort_buffer=512 net_buffer_length=8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid --------------------------  php.ini (一部抜粋) -------------------------- mysql.default_socket = mysql.default_host = mysql.default_user = mysqli.default_port = 3306 --------------------------  サーバー環境 -------------------------- OS: Red Hat Enterprise Linux ES release 4 MySQL: MySQL: 5.5.9-2 [ファイル構成] /var/run/mysqld/mysqld.pid /var/lib/mysql/mysql.sock ※上記のファイルは所定のディレクトリだけでなく、サーバー上に存在しません。 /var/lib/mysql  -mysql/  -performance_schema/  -test/

  • phpmyadminで日本語データが文字化け

    phpmyadminで日本語のデータだけ文字化けしてしまいます。 phpで作成された掲示板からデータをmysqlに投稿し、そのデータを再度掲示板で表示しています。 投稿・表示するphpファイルはutf8で、mysqlのmy.cnfは以下のようになっています。 --------------- [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 --------------- phpmyadmin(2.11.11)側は、MySQ の接続照合順序:utf8_unicode_ci にしています。 phpmyadminで文字化けしているデータをphpで見ると問題なく表示されてるのが不思議です。 どこが問題なのでしょうか。

    • ベストアンサー
    • MySQL
  • MYSQLの文字化けについて

    MYSQLの文字化けについて質問させてください。 MYSQL COMMAND LINE CLIENTでMYSQLに作ったデータベースに下記のSQL文でデータを入れると、下記のエラーが出ます。 sql 「insert into テーブル名 (id、type)values (1,'男性’);」 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'type’at row 1 文字化け対策として、調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake [mysqldump] default-character-set =utf8 ちなみにその他情報です。 MySQLのバージョン MySQL 5.1 MySQLで有効になっている文字コード 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 何かお解かりになることがありましたら、宜しくお願いします。

  • 設定が間違っていないのに文字化けします

    タイトル通りです。 VirtualBoxの仮想環境のCentOS内に Apatch+PHP+Mysqlで開発環境を作っているのですが どうにもこうにも文字化けします 症状としては phpmyadminで確認した時、日本語のデータが正しく表示されるが 実際にphpでデータベースから取り出して表示すると???になります。 phpのフォームから日本語を入力してそのデータを表示すると正しく表示されるのですが 今度はデータベース内のデータが文字化けしています。 こちらのスクリプトでは文字化けしないのでPHPの設定ミスではないようです http://tsuttayo.jpn.org/php/char_trn/ phpinfoの情報 Directive Local Value Master Value mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output pass pass mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml) mbstring.internal_encoding UTF-8 UTF-8 mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character no value no value Mysqlの設定もご覧の通りです 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/share/mysql/charsets/ 以下my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character_set_server=utf8 default-storage-engine=InnoDB innodb_file_per_table default-character-set=utf8 skip-character-set-client-handshake [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid スクリプトはちゃんとUTF-8BOMなしで作っています。 Mysqlのバージョンは 5.5.33です。 PHPのバージョンは 5.4.19です。 PDOのオプションも試しみましたがうまくいきませんでした。 非常に困っています。 回答いただけたら幸いです。

    • ベストアンサー
    • MySQL
  • my.ini 内を変更しても文字化けがなおらない

    my.ini 内の [mysql]、[mysqld]、[mysqldump] の部分を変更したのですが、文字化けが直りません。 文字化けします。 対応:my.ini 内の [mysql]、[mysqld]、[mysqldump] の部分 ↓ [mysqld] default-character-set=utf8 skip-character-set-client-handshake [mysqldump] default-character-set=utf8 [mysql] default-character-set=utf8 に変更しましたが コマンドプロンプトで mysqlに接続後、statusと打ち込んで状態を確認しても Client characterset:latin1 Server characterset:latin1 となったままです。 とうすればよろしいでしょうか? 何卒よろしくお願い致します。

  • mysqlの文字化けについてです

    学校でjavaの勉強をしている者です。 初心者です。 学校の宿題をやるために、自宅でmysqlをインストールしたのですが、 javaで実行すると文字化けしてしまいます。 学校では、my.iniの中の [mysql] default-character-set=latin1 を [mysql] default-character-set=sjis と変更し、 [mysqld] default-character-set=latin1 を [mysqld] default-character-set=sjis skip-character-set-client-handshake と変更し、 SQLを再起動すれば解決すると習ったのですが、 文字化けが起こってしまいます。 show variables like '%char%'で文字コードを確認してみたところ、 | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | このように、sjisになっていませんでした。 どうしてなんでしょうか? どなたか解答のほどよろしくお願いします。

  • mysqlの文字化けについて

    mysqlの文字化けについて教えて下さい。 現在はテーブルを作って、データを挿入している段階なのですが、日本語入力のみ文字化けが起こります。 調べたところ、下記のように「my.ini」に記述すると言うことでしたので、試してみました。 [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 [mysqldump] default-character-set =utf8 skip-character-set-client-handshake ※そのほかSERVER SECTIONの箇所へも「default-character-set=utf8」を記述。 csvファイルを読み込みすると、日本語の箇所のみ文字化けが起こり、mysql上で直接データを挿入すると、ローマ字は入るのですが、漢字だとエラーになってしまいます。 エラー文 incorrect string value: '入力文字が文字化けして表示’for column 'カラム名’at row 1 何か原因のお解かりになる方、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • XAMPP1.7.1をインストールし、MySQLの文字コード設定について

    MySQLの文字コードを変更について教えてください。 my.iniファイルを開いて [mysqld] の中に ・・・ default-character-set=utf8 skip-character-set-client-handshake [mysqldump] ・・・ default-character-set=utf8 [mysql] ・・・ default-character-set=utf8 と変更したのですが、MySQLを再起動しstatusで確認したのですが、 latin1のままで変更されません。 XAMPPをアンインストールをして再度同じ設定を行ってもlatin1でした。my.iniファイルのほかに何かのファイルを変更しなくてはいけないのでしょうか? ↓のサイトを参考に設定を行っています。 http://mysqlx01.seesaa.net/です。 教えてください。 宜しくお願いします。

    • ベストアンサー
    • MySQL