2010年4月27日

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

豊丹生と申します。

違ってたらすみません。
&既にお試しであればすみません。

以下の内容だとBの環境でsql実行前に
set names utf8;
を実行すれば良いのではないでしょうか?


Michiyoshi Buniu

----- Original Message -----
From: "TAKENAKA, Akikazu" <akikazu@xxxxx>
To: "ml" <ml@xxxxx>
Sent: Monday, April 26, 2010 6:16 PM
Subject: [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月27日 12:44
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95472
トラックバック
コメント
コメントする




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