[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 メーリングリストの案内