MySQL との接続に文字コードを指定する
今までMySQLの文字コードを意識せず・・・つまりlaten1で
見かけ上動いていたPHPのアプリケーションがありました。
思い切って、テーブルの内容をutf8にコンバートしたのですが、
案の定日本語が文字化けします。
別なアプリケーションが動いていたりするので、できるだけ
MySQLの設定を変更せずに、PHPのプログラム改修でなんとか
ならんものかと調べてみると、所々で
「SET NAMES utf8のクエリを投げればよいよ。」
という記述を見つけました。
早速、
mysql_query("SET NAMES utf8")
としてみたのですが、効果なし。
やっぱり駄目なのかなとあきらめていると
http://bono.s201.xrea.com/2006/03/11-utf8_xrea_3/
ひょっとして・・・
$con = mysql_connect("localhost", "root", "password")
mysql_select_db("db_name")
mysql_query("SET NAMES utf8", $con);
このコードでできました。
mysql_queryの引数に$conを渡すと、何が変わるんだろ?
ちなみに、その後Content-Typeのcharsetが
shift_jisになっていたので、
もutf8に変更しなきゃと思って
「utf8」
と書いてしまい、はまりました。
正確には
「utf-8」
ですね。
それと、phpのソースも全部utf8に変換したのですが、
BOM付きで保存してしまい、
header("Location: index.php");
の記載がある箇所でエラーになることでもはまりました。
PHP、BOMはごみとして判定してる?
文字コード、やっぱり難しいですね。
もどる