MAMP+PHPmyAdmin環境で、SQLによってINSERTした内容が文字化けする場合が頻繁に起こります。(個人的な環境ですが)
はっきりした原因がわからないのですが、解決方法を見つけたのでメモ。
確認環境
- MacOS 10.6.8
- MAMP PRO 2.0.5
- PHP5.2.17
- 文字コードはUTF-8とします
MySQLにutf-8だよと知らせてあげる
SQLの実行前に「mysql_set_charset(‘utf8’);」を行ってあげるとよいらしいです。
mysql_set_charset(‘utf8’);はPHP5.2.3以降とかかれていましたが、なぜか当方の環境でも使えました。(なぜだろう…)
//SQL文
$q = sprintf( "insert into bookmarks( 〜 ) values ( 〜 )", 〜 );
//本SQL文の実行の直前にこれを実行
mysql_set_charset('utf8');
//そのあとに本SQL文を実行
mysql_query($q) or die ("失敗".mysql_error());
mysql_query(SET NAMES ‘utf8’);
ちなみに、検索するとよく出てくる
mysql_query("SET NAMES 'utf8'");
は、セキュリティ的にあまりよろしくないそうです。