MySQL4.1の文字化け関連 MySQL4.1系UTF-8の場合

MySQL4.1系ではデフォルトでUTF-8文字列が使われます。
PHPから普通にデータ挿入をしようとすると、文字化けします。

SQL文を発行するまえに、クライアントの文字コード設定をしましょう。
文字コードの設定は次の構文で行います。

mysql> SET NAMES character_set_name


UTF8に設定するには次のSQL文を実行します。

mysql> SET NAMES utf8


次にPHPでこれを行うサンプルプログラムを示します。

例)

<?php
require_once'DB.php';

$username = "dbuser";
$password = "dbpass";
$host     = "dbhost";
$database = "dbname";
$db = DB::connect("mysql://$username:$password@$host/$database");

if (
DB::isError( $db )) {
    die(
$db->getMessage());
}

// SET NAMES クエリの発行
$sql = "SET NAMES utf8";
$result = $db->query($sql);

?>


毎回スクリプト側にて行うのが面倒だ、という方はmy.cnfに次のように記述します。
(XAMPPの場合は、C:\Program Files\xampp\mysql\bin以下にmy.cnfが存在)

[mysqld]
init-connect=SET NAMES utf8


尚、XAMPP(v1.5.1時点)を使っている場合、このオプション(init-connect)が効かないので、
C:\Program Files\xampp\mysql_start.batを開きmysqldの起動オプションに、
「--init-connect="SET NAMES ujis"」を書き加えてください。

例)
mysql\bin\mysqld --defaults-file=mysql\bin\my.cnf --init-connect="SET
NAMES ujis" --standalone


これでも文字化けする、という方はmy.cnfの設定を確認します。次のように、サーバ側の文字コードがUTF-8になっているか確認します。

[mysqld]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8