[PHP-users 26884] MySQLから取得した文字が一部化ける。

MAO mao @ nextyle.com
2005年 9月 15日 (木) 22:37:11 JST


お世話になります。


PHP 4.3.11 
MySQL 4.1.14-standard 
の環境で開発をしています。

下記のよなコード(euc)を走らせたところ、

$sql = 'insert into tbl_test(aa) values(?)';
$sth = $db->prepare($sql);
$res = $db->execute($sth,array('しながわ'));

$sql = 'select * from tbl_test';
$sth = $db->prepare($sql);
$res = $db->execute($sth);
print_r($row = $res->fetchRow(DB_FETCHMODE_ASSOC)));


Array ( [aa] => ・ながわ ) 
と結果が返ってきて、"し"がばけてしまいます。

MySQL 4.1 のためコード変換しているのかとおもったのですが、
設定を確認したところ、

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | ujis                       |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

といった状態で、クライアントもサーバもujisです。

ただ、
mysql> select * from tbl_test;
+---------------------------------------------------+
| aa                                                |
+---------------------------------------------------+
| ¢¨?¬               |
+---------------------------------------------------+

と、したところ、ストア時にばけてストアしてしまっているようなのですが、

CREATE TABLE `tbl_test` (
  `aa` varchar(200) collate ujis_bin NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=ujis COLLATE=ujis_bin;

と、データベースもujisになっています。

php.iniの設定では、
mbstring.encoding_translation = Off

としてあり、変換しないようにしてあります。

何がおかしいのでしょうか?

よろしくお願いいたします。



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