2010年4月26日

[mysql 15296] 同じはずの環境で片方だけ文字化け

神奈川の竹中と申します。お世話になります。

ML #15248 とも一部重なるかと思い恐縮なのですが、どうしても解決できず困っています。
また、もしかしたらPHPユーザ会MLで聞いた方が適切かもしれないのですが、問題の切り分けができていません。

同一のPHPコード、同一のMySQLテーブルを使用して、2つの環境でテストを行っているのですが、片方だけ文字化けするという現象に困っています。

環境は下記の2ヶ所です。


【A】レンタルサーバheteml。
MySQLサーバ 5.0.82-community-log
MySQLクライアント 4.0.25
phpMyAdmin 2.11.2.2
PHP 5.2.8

【B】手元のMacBook(Mac OS X 10.5.8)。
MySQLサーバ 5.1.45
MySQLクライアント 5.0.82
phpMyAdmin 3.3.2
PHP 5.2.12

上記のそれぞれの環境で、下記のテーブルをphpMyAdmin上で作成しました。
下記のコードは、テーブル作成後に SHOW CREATE TABLE を発行した結果で、環境Aと環境Bでまったく同一でした。

CREATE TABLE `test` (
`user_id` int(4) unsigned NOT NULL,
`user_name` varchar(20) collate utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

続いて、それぞれの環境で、phpMyAdmin上でデータを挿入しました。

INSERT INTO test (`user_id`, `user_name`) VALUES (1, '竹中彰一');

phpMyAdmin上、およびターミナル上でデータを確認したところ、どちらの環境でも正常に登録されていることがわかりました。

次に、下記のPHPコードで接続テストを行いました。
(シフトタブを全角スペースに置換しています)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>テスト</title>
</head>
<body>
<table>
<tr><th>ユーザID</th><th>名前</th></tr>
<?php
$con = mysql_connect($hostname, $userid, $passwd);
if (!$con) {
 die('MySQLへ接続できませんでした' . mysql_error());
}
mysql_select_db($dbname);
$ret = mysql_query("SELECT * FROM test");
while ($val = mysql_fetch_array($ret)) {
 $user_id = (string)$val['user_id'];
 $user_name = $val['user_name'];
 print '<tr><td>' . $user_id . '</td><td>' . $user_name . '</td></tr>';
}
mysql_close($con);
?>
</table>
</body>
</html>

このコードをFirefox 3.5.9で表示したところ、環境Aでは期待通り、下記の結果が返りました。
(抜粋)

<table>
<tr><th>ユーザID</th><th>名前</th></tr>
<tr><td>1</td><td>竹中彰一</td></tr>
</table>

しかし、環境Bでは文字化けしてしまいました。

<table>
<tr><th>ユーザID</th><th>名前</th></tr>
<tr><td>1</td><td>????</td></tr>
</table>

問題がMySQL側とPHP側のどちらにあるのかわからず、糸口がつかめない状態で困っております。
MacへのMySQLのインストールなどよくわからないままやったので、どこを調べればいいのかすらわからないのですが…

解決へのヒントや疑うべきポイントなど、ご教授いただければ幸いです。
よろしくお願いいたします。


--
equal1
竹中 彰一 (TAKENAKA, Akikazu)
akikazu@xxxxx | www.equal1.net
Skype: equal1.at | iPhone: +81-90-8477-3901


投稿者 xml-rpc : 2010年4月26日 18:16
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95462
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。