• 締切済み

MySQL+PHP文字化け

PHPからMySQLを使っています。 MySQLもPHPも文字コードはutf8を使っているのですが、PHPMyAdminから入力した日本語を普通に読み出すと文字化けして「??????」になってしまいます。また、自作コードからの日本語のinsertもできません。 しかし、「set character set utf8」を先に実行しておくといずれも上手くいきます。 これは一体どういうことなのでしょうか? そもそも全てutf8で統一しているつもりなのですが、MySQLかクライアントのどちらかで他のコードが使われているということなのでしょうか? MySQLはstatusなどを見てもutf8になっているので、どちらかと言えばクライアントの方が臭うのですが、よくわかりません。 どうか知恵をおかしください。

みんなの回答

回答No.1

phpMyAdminの文字コードの設定が、適切に行われていないのでは? phpMyAdminからSQLを入力できる状態で、 show variables like '%char%' の結果を確認してみてください。

pleiad-p
質問者

お礼

ありがとうございます。 それに関しては試行済みで、問題もありません。 どうやらクライアントの文字コードがlatin1になっているのが原因で、これは変更できないようです。 set character setやset namesを使用するとSQLインジェクションに弱くなるので止めた方がいいらしいのですが、PHPのバージョンが古くてAPIでの変更はできず……困ったものです。