
MySQLは、4.1から内部処理コードが"utf8"に変わり、文字処理周りにも変更が出ています。 そのために、クライアントから送信される文字コードとデータベースの文字コードが異なる場合、文字化けが発生する可能性があります。 それを防ぐには、クライアントから送信される文字コードやサーバーから返される文字コードを指定する必要があります。
SET NAME は、クライアントから送信されるSQLステートメントの文字セットを指定します。
SET CHARACTER_SET は、クライアントから送信されるSQLステートメントの文字セットと、サーバーからクライアントに返される文字セットを指定します。
*注 SET NAME による文字セットの指定は、SQL 文使用に起因する脆弱性が報告されており、 php5.2.3 から新たに追加された APIレベルの "mysql_set_charset()" が推奨されます。 (例) mysql_set_charset('utf8');