MySQLの文字化け対策メモ

問題
クライアントとサーバーの両方の文字コードを統一したはずなのに、PHPからデータベースの中身を取り出すと文字化けして「?」」になる。

原因
ネットで調べてみたら、両方の文字コードを揃えていても、PHPのビルド時に設定された文字コードが適用されてしまう場合があるらしい。デフォルトだとlatin1(欧文フォント)みたい。

対策
PHPからデータベースに接続したときに、文字コードの設定をしてあげる。MySQLの設定ファイルをいじる方法もあるらしいんですが、レンタルサーバーだとできないので
結局どうすればいいかというと、データベースに接続した時に

mysql_set_charset(“utf8” , $db);

を書いて文字コードを指定してあげると文字化けしなくなりました。(これはutf8の場合)

<?php
$db=mysql_connect(“データベース”,”ユーザーネーム”,”パスワード”);
mysql_set_charset(“utf8” , $db);
?>

こんな感じです。

「set names」を使う方法も見かけましたが、これだとセキュリティーに問題があるらしいです。

コメントを残す