Zhou Haihan/Text
ADO は、new COM("ADODB.Connection", NULL, CP_UTF8)//65001 のようなステートメントを使用して、正しい変換を実現できます。しかし、ADO の php サポートにはドキュメントがありません。オープンソースの adodb には豊富なドキュメントがあります。
UTF-8 を設定する方法は、次のようにデータベース ドライバーごとに異なります:
コードをコピーします コードは次のとおりです:
すべてのドライバーの場合
'persist'、'persistent'、'debug ', ' fetchmode', 'new'
Interbase/Firebird
'dialect','charset','buffers','role'
M'soft ADO
'charpage'
MySQL
'clientflags'
MySQLi
'port' 、'socket '、'clientflags'
Oci8
'nls_date_format','charset'
すべてのドライバー用
'persist'、'persistent'、'debug'、'fetchmode'、'new'
Interbase/Firebird
'dialect' ,'charset ','buffers','role'
M'soft ADO
'charpage'
MySQL
'clientflags'
MySQLi
'port', 'socket', 'clientflags'
Oci8
'nls_date_format','charset '
その中で、Ado は、新しい COM メソッドと同様に、charPage 属性を使用して uft-8 を設定できます。しかし、AdoNewConnection($dbdriver) の $dbdriver が 'ado' または 'ado_mssql' に設定されている場合、渡されたデータベースがプロバイダーによって置き換えられることがわかりました。データベースの名前を設定するにはどうすればよいですか?まだ方法が見つかっていません。
$dbdriver='ado://sa:cvttdev@172.16.22.40/sqloledb?charpage=65001';
形式は 'driver://user:passwd@host/database?options[=value] です
解決しない データベース名を設定する場所。
長い間悩んだ結果、次の解決策しか見つかりませんでした:
コードをコピーします コードは次のとおりです:
$dbdriver='ado_mssql';
$server='192.168.22.40 ';
$user='sa';
$DATABASE='sqloledb';
//$dbdriver='ado://sa:cvttdev@172.16 .22.40/sqloledb?charpage= 65001';
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER={172.16.22.40};DATABASE=sugarcrm_db;UID=sa;PWD=cvttdev;"; ('adodb5/adodb.inc .php');
$db = ADONewConnection($dbdriver); # 例: 'mysql' または 'postgres'
$db->charPage = 65001 ;
//$db->Connect($server, $user, $password, $database);
$db->Connect($myDSN);
//エラー:mssql サーバーは以下のコードをサポートしていません
// $db->Execute( "名前を設定 'utf8'");
echo "クエリの前"
$rs = $db->Execute('select * from accounts');
print "
" ;
print_r($rs->GetRows());
;
上記では、mysql workbench php adodb が文字化けの問題を解決するために mssql に接続する方法を紹介しており、mysql workbench の内容も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。