PHPからデータベースMySQL (MariaDB) にinsertすると文字化け、原因と対策

データベース
スポンサーリンク

PHPのプログラムでMySQLへ日本語をinsertしたら文字化けしてしまいました。

原因と対策を調べてみました。

スポンサーリンク

PHP から MySQL へ insert すると 文字化けして????「はてな」(クエスチョンマーク)

PHPでMySQLに、UTF-8の日本語の文字列を insert しました。

 

その後、表示させてみると、日本語の文字列が「????」(はてな、クエスチョンマーク) と文字化けしていました。

UTF-8がまずいんだろうか?

 

原因を調べてみました。

PHP から MySQL へ接続するにはPDO

まず、PHPからMySQLへの接続方法を調べてみます。

 

PHP から MySQLに接続するには、mysql_connectとPDOとがあります。

PHP 5.5から mysql_connect() は、非推奨のため、PDOを使って接続します。

 

こんな感じで、接続する際の文字コードをutf8で指定しているので、接続する時の文字コードは問題ないようです。

 

文字化けの原因は、MySQLの文字コード?

MySQLの文字コードを調べてみます。

 

以下のSQLで調べます。

mysql > show variables like "char%";

 

character_set_database と character_set_server が latin1 となっていますね。

ここを修正します。

 

/etc/my.cnf を編集して

character-set-server=utf8

を追加しておきます。

 

MySQL (MariaDB) を再起動します。

 

再度、MySQLの文字コードを確認します。

 

これで、再度、UTF-8の日本語をinsertすると、無事に文字化けは解決しました!

 

 

コメント