MySQLとPHPでの文字化け(mysql_set_charset)

MySQLとPHPでの文字化け(mysql_set_charset)

MySQLMySQLとPHPでの文字化け(mysql_set_charset)

PHP と MySQL を使って構築された Web アプリで、最初に確認することの 1 つに文字コードの問題がある。ここ数年はアプリもデータベースも UTF-8 の文字コードを使うことが一般的ですが、サーバ設定を見るとさまざま。

例えば MySQL サーバ(mysqld)の場合は default-character-set で utf8 を設定していても、PHP の MySQL 接続クライアントは PHP ビルド時の文字コードによって挙動が変わるため、PHP のコネクション取得後に mysql_set_charset("utf8") や SET NAMES UTF8 などを実行しなければいけないケースが出てくる。

PHP5.2.3 以降なら mysql_set_charset でいいですが(このブログもこれ)、違うバージョンでは 脆弱性が指摘されている SET NAMES UTF8 を使っているアプリもあれば、MySQL サーバ側で skip-character-set-client-handshake を使っているところもある。

これだけ混在してくると、他社サーバへの導入や、環境設定がある程度限定されたフレームワークによって文字化けするしないの問題はつきまとう。全然まとまってないけど、とにかく本番サーバと全く同じ環境で事前に動作検証させてもらっておかないとドキドキすることになる(笑)

最終更新日:

関連記事

人気記事

新着情報