WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

XAMPPのPHP+MySQLで日本語が絶対に文字化けしない設定メモ

この記事は約2分7秒で読めます

MySQL
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

XAMPPをインストールしてMySQLの設定をせずそのまま利用していると日本語の入ったデータベースが文字化けすることはないでしょうか?
文字コードの設定って一箇所変えても直らなかったりバージョンによっては設定方法が若干違うところもあります。

ということで、これやっとけば文字化けしないでしょ!っていう設定方法のメモを残します。

MySQLなどの環境

私のMySQL環境です。
Windows7マシンでXAMPPはver3.2.1です。

MySQLの文字化け対策

my.iniファイルを修正する

C:\xampp\mysql\bin\my.ini

「my.ini」ファイルを修正します。
Cドライブ直下にxamppをインストールしたら上記の場所にあると思います。

上記設定後にMySQLを再起動してください。
※既に作成されているテーブルは再度作成し直す必要があります。

データベースの文字コードと照合順序の確認方法

最終的に上記の設定になっていればok

既にデータベースが作られている場合

データベースが既に作成されている場合で文字化けが起こっている場合は作り直す必要があります。
もしくはデータベースの文字コード情報をALTER文を使って変更します。

データベースの文字コードを情報を変更するSQL

上記のコマンドでデータベースの属性を変更することはできますが、
影響があるのは変更以降に作成されるテーブルだけです。

なので、作り直した方が早いと思います。

MySQLの接続照合順について

よく使われる接続照合順序は「utf8_bin」「utf8_general_ci」「utf8_unicode_ci」のいずれかだと思います。
「utf8_bin」はSQLのLIKE文(マッチするものを検索)などで大文字小文字を区別されます。
検索で大文字と小文字が区別されてしまうと利便性が低下するので「utf8_general_ci」「utf8_unicode_ci」のどちらかが良いです。

「utf8_general_ci」「utf8_unicode_ci」の違い

utf8_bin の場合、部分一致探索 LIKE などの使用時に英字の大文字小文字が区別されてしまう。大文字小文字を区別されないようにするためには、照会順序として utf8_general_ci を使用すればよいのですが、他にも utf8_unicode_ci があることに気がつきました。

探索等において、文字列照合の正確性と速度のトレードオフのようですね。正確性を重視するのであれば utf8_unicode_ci を使用して、速度を重視するのであれば utf8_general_ci を使用すればいいみたい。

utf8_general_ci と utf8_unicode_ci の違い|Ceekz Logs

正確性を重視:utf8_unicode_ci
速度を重視:utf8_general_ci
* 2016年1月22日 コメントでご指摘ありましたので、修正致しました。

参考サイト

関連記事

  1. Symfony2 blogチュートリアル 04 バンドルの作成
  2. Symfony2 Routing Annotation
  3. symfony2
  4. 基本からしっかり学ぶ Symfony2入門
  5. Symfony2 KnpPaginatorBundleで全件数を取得する
  6. symfony2

PR

カテゴリー