osCommerceの初期データを、utf-8で動いてるmysqlサーバにimportする
2007/09/07
osCommerceを動かしてみたときに、既に動作していたmysqlのcharsetがutf-8だった(osCommerceは、euc-jpが前提)ために、DBから取得してくる文字が表示されなかった。なんだか妙に嵌ってしまった。
mysqlの文字コードの違いからくる問題について、今頃MySQL4.1系と格闘 にまとまっていました。
以下、やったこと。
データベースを作る。
$ mysql -u root mysql> create database dbname;
osCommerceの初期データsqlファイルを、EUC-JPからUTF-8に変換してデータベースへ登録する。
$ lv -Ou8 oscommerce.sql > mysql -u root dbname
mysql_connectした直後に、mysql_query(“SET NAMES ujis”);を追加した。
$ diff -c admin/includes/functions/database.php.org admin/includes/functions/database.php *** admin/includes/functions/database.php.org 2007-09-07 21:56:21.326155432 +0900 --- admin/includes/functions/database.php 2007-09-07 21:57:47.264090880 +0900 *************** *** 18,23 **** --- 18,24 ---- } else { $$link = mysql_connect($server, $username, $password); } + mysql_query("SET NAMES ujis"); if ($$link) mysql_select_db($database); $ diff -c catalog/includes/functions/database.php.org catalog/includes/functions/database.php *** catalog/includes/functions/database.php.org 2007-09-07 21:54:46.421583120 +0900 --- catalog/includes/functions/database.php 2007-09-07 21:58:23.499582248 +0900 *************** *** 18,23 **** --- 18,24 ---- } else { $$link = mysql_connect($server, $username, $password); } + mysql_query("SET NAMES ujis"); if ($$link) mysql_select_db($database);
これでとりあえず、化けなくなったので、様子を見よう。