php spot
phpが使えるレンタルサーバー特集
検索グラス
トップページへ

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

my.cnf 設定ファイルで、EUC(ujis)設定を行います。
次のように記述してcharacter-setをujisにしましょう。

[client]
default-character-set=ujis
[mysqld]
default-character-set=ujis
character-set-server = ujis
[mysqldump]
default-character-set=ujis
[mysql]
default-character-set=ujis

my.cnfを修正した上で、mysqlを起動している場合は再起動します。
それで、SQL文を発行するまえに、クライアントの文字コード設定をしましょう。
文字コード設定は次のSQL構文で設定可能です。

mysql> SET NAMES character_set_name

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

mysql> SET NAMES ujis

次に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 ujis";
$result $db->query($sql);

$sql "INSERT 〜";
$result $db->query($sql);

?>

これで INSERTやSELECTで文字化けは避けられる筈です。

毎回スクリプト側にて行うのが面倒だ、という方はmy.cnfに次のように記述してください。

[mysqld]
init-connect=SET NAMES ujis

尚、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

スポンサードリンク


管理人の新着ブログ記事

    プライバシーポリシー | お問い合わせ
copyright © 2003-2024 phpspot all rights reserved. powered by phpspot CMS.