astroworks/神戸 コンテンツ制作

ウェブソリューション・コンテンツ制作のアストロワークス

アストロワークスは、企業の価値を高めるブランディング、Web戦略を創出するウェブコンサルティングファームです。

Recommend:おすすめコンテンツ

phpmyadminの文字化けが治らない

dumpファイルの文字化け

dumpファイルの文字化け

phpmyadminの文字化けがskip-character-set-client-handshakeでも治らない場合の対処備忘録

UTF-8で統一しても、phpmyadminからLatin1で保存されたテーブル内が文字化けする場合の対処。

「MySQLの設定」
# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
#skip-character-set-client-handshake
※最終的にコメントアウト
[mysql]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
MySQLをリスタートする。
# /etc/rc.d/init.d/mysqld restart

設定状況をMySQLクエリで確認する。
# mysql -u [ユーザー名] -p [データベース名]
mysql> show variables like 'char%';
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/

mysql> show variables like 'coll%';
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

「phpMyadminの設定」
# vi /var/www/phpmyadmin/config.inc.php
$cfg['DefaultLang'] = 'utf-8';
$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';
$cfg['FilterLanguages'] = '';
$cfg['DefaultCharset'] = 'utf-8';
$cfg['AllowAnywhereRecoding'] = TRUE;

Apacheをリロードする。
# /etc/rc.d/init.d/httpd reload

ここまでやっても治らない。
データ修復のため、MySQLdumpを使う。
「Dumpデータの取得」
# mysqldump -u [ユーザー名] -p [データベース名] > [データベース名_20120108dump.sql ※任意のファイル名];
保存されたファイルを確認。
# ls -l
保存されたファイルを開く
# vi [データベース名_20120108dump.sql]
ぐっちゃぐちゃに文字化けしている!

「DumpデータをLatin1で取得」
# mysqldump --default-character-set=latin1 -u [ユーザー名] -p [データベース名] > [データベース名_20120108.dump];
保存されたファイルを確認。
# ls -l
保存されたファイルを開く
# vi [データベース名_20120108.dump]
文字化けしていない。涙を拭いながら引き続き

「保存したdumpデータの文字コードをLatin1からUTF-8に変換する」
9行目
/*!40101 SET NAMES latin1 ←latin1を utf8 に変更。

「Dumpからデータを復元する」
# mysql -u [ユーザ名] -p [データベース名] < [データベース名_20120108.dump]

MySQLをリスタートしてphpMyadminを確認すると文字化けが治り、照合順序がutf8_unicode_ciになっている。
# /etc/rc.d/init.d/mysqld restart

ここで、データベースの出力が文字化けする場合 skip-character-set-client-handshake を有効にする。
「MySQLの設定」
# vi /etc/my.cnf
[mysqld]
#skip-character-set-client-handshake ← コメントアウト

★ここで行った設定は、サーバー、データベース、クライアントの文字コードを統一してから、それ以前のデータベースを修復しました。
skip-character-set-client-handshake について下記リンク先より情報を得るなど自己責任でね。

written by Harii

2012-07-04|phpmyadminの文字化けが治らない

この記事のカテゴリー

この記事へのコメント

新規コメント出力エリア

この記事にコメントする

エラーメッセージ出力

新着情報ここまで

免責事項

astroworks.co.jp に含まれている情報は、いかなる保証もない現状ベースで提供されるものです。有限会社アストロワークスは、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、 有限会社アストロワークスは、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。 有限会社アストロワークス及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。有限会社アストロワークス及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(有限会社アストロワークスまたはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。)

フォームよりお問合せ

ページの先頭へ戻る