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'; 192.168.22.40';
$user='sa';
$DATABASE='sqloledb'; 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;" ;
include('adodb5/ adodb.inc.php');
$db = ADONewConnection($dbdriver); # 例: 'mysql' または 'postgres'
$db-> charPage =65001;
// $db->Connect($server, $user, $password, $database);
$db->Connect($myDSN);
//エラー:mssql サーバーは以下のコードをサポートしていません
//$db-> ;Execute("set names 'utf8'");
echo "クエリ前";
$rs = $db->Execute('select * from accounts'); pre>";
print_r( $rs->GetRows());
print "";
?>