• ベストアンサー

SET NAMES utf8 はなぜ必要なんでしょうか?

データベースもテーブルも、スクリプトもUTF8なのに、わざわざ、「SET NAMES utf8;」としないと文字化けするのは、なぜでしょうか? この、SET NAMES utf8; は、コネクトする度に必要になるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

クライアント側の文字コードとサーバ側の文字コードの間で自動変換をしますからね>4.1以降(だったかな・・)。スクリプト側での(実際の)文字コードはサーバに「クライアントの文字コードはこれこれです」という通知にはなりませんから、接続のたびに「set names」で通知する必要があります。

sweepea
質問者

お礼

ご回答ありがとうございます。 なるほど、面倒ですが必要なんですね。 そういえば、my.cnf で charsetをutf8にしても、mysql_client_encoding() でLatin1を返すのと何か関係があるのですかね。 ありがとうございました。