[PHP-users 29080] PEAR:DBのprepareを使ったときに文字化け

mygwdisk.ml.read@gmail.com mygwdisk.ml.read @ gmail.com
2006年 4月 22日 (土) 15:20:03 JST


だいすけと申します。

たびたびの質問で恐縮ですが、お願いします。
(29060で質問した自分のスレッドに感謝のメールを出したのですが、
なぜか当方にとどいていなく、でもウェブ上の過去ログにはあったのので、
、ここで御礼申し上げます)

【問題】
PEAR:DBのprepareを使ったときに文字化けで困る

【環境】
FreeBSD5.4-RELEASE、
Apache1.3(SSL)(portsからインストール)、
php 5.1.2(ソースからインストール)、
mysql 5.0.19(ソースからインストール)、
phpMyAdmin 2.8.0.2(ソースからインストール)、
の環境で使っています。


●PHPについては(php.ini内)
mbstring.language string = Japanese
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

●MySQL
 ./configure --with-charset=ujis -with-extra-charsets=all
 --with-mysqld-user=mysql
でインストール

なお、
/etc/my.confには、
[mysql]
default-character-set=utf8

【問題の詳細】

----------------------------------------------------
$utf8_sql = "SET NAMES UTF8";
$result = $db->query($utf8_sql);
//↑つけてもつけなくても動作変わらず

$_REQUEST["c"] = メインページ;
$stt = $db->prepare("SELECT * FROM category WHERE c = ?");
$rs = $db->execute($stt,$_REQUEST["c"]);

print "<pre>";
print_r($rs);
print "</pre>";
----------------------------------------------------

この結果出力が、
(一部引用)

   [parameters] => Array
        (
            [0] => メインページ
        )

    [query] => SELECT * FROM category WHERE c = '\メインペ\ー\'


となりprepareすると文字化けしてしまいます。
------------------------------------------------------

Googleなどで調べると、
PHP5になってから、日本語変換のしくみがかわった*らしい*
くらいの情報しかつかめず、困った状態です。

どうぞよろしくお願い申し上げます。



PHP-users メーリングリストの案内