[PHP-users 20592]ADOで文字化け

nona nona @ yacht.ocn.ne.jp
2004年 2月 29日 (日) 05:08:44 JST


nonaと申します。
Windows2000Server+SQLServer2000+Apache1.3.29の環境で
COMクラスでADOを使用したデータベースに接続するシステムを作っています。
以前、VBでADOを使っていたので以下のようなコーディングにしたのですが、
ADOのupdateメソッドを使うと、データベースに文字が入ったとき、
文字の語尾に余計な文字化けした文字が入ってしまいます。
(しかし、SQLでINSERT、UPDATE句を入れてexcuteメソッドを走らせた場合、文
字化けは起きません。)

以下、PHPのソース(insertの場合)---------------------------------
$Cn = new COM( "ADODB.Connection" );
$Rs = new COM( "ADODB.Recordset" );
$ConnectionString = "Provider=SQLOLEDB;Initial Catalog=test;User ID=sa;Password=;Network Address=.;";
$Cn->Open( $ConnectionString );
$Sql = "SELECT * FROM TEST ";
$Rs->Open( $Sql , $Cn );
$Rs->AddNew();
$Rs->Fields["TEST"]->value = "あああ";
$Rs->Update();
------------------------------------------------------------------

自分なりに調べたんですが、SQLServerの文字列データはUnicodeを使用している
ということだったので、mb_convert_encoding関数でUTF-8にエンコードしたりし
てみましたが、余計に文字化けしてしまいました。。
どなたか同じ経験をされた方いらっしゃったら、解決方法をご教授して頂けます
でしょうか?よろしくお願いいたします。

---------php.iniの設定内容
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS-win
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

-- 




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