osCommerceの初期データを、utf-8で動いてるmysqlサーバにimportする

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);

これでとりあえず、化けなくなったので、様子を見よう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください