phpでmssqlをクエリする際の文字化けの解決策
具体的な解析は以下の通りです
php が mssql に接続されると、すべての結果が文字化けします。私は経験からこの問題がエンコーディングの問題であることを知っています。
解決策を以下にまとめておきます。
方法 1、php.ini ファイルを変更します。もちろん、ページの状況に応じて設定することもできます。コードは次のとおりです。
コードは次のとおりです:
;mssql.charset = "ISO-8859-1"
mssql.charset = "GBK"
方法 2、プログラム内で直接変換、コードは次のとおりです:
コードは次のとおりです:
iconv('GB2312','UTF-8',$data)
方法 3、Ado 接続を使用して接続時にエンコードを設定します。コードは次のとおりです:
コードは次のとおりです:
$conn = new COM("ADODB.Connection", NULL, CP_UTF8) または die("ADO を開始できません");
PHP の例、コードは次のとおりです:
コードは次のとおりです:
<頭>
//print("次の行ではエラーが発生します。www.jb51.net
");
//printaline("お願いします?");
//print("上記エラーのため表示されません。");
?>
$conn = new COM("ADODB.Connection", NULL, CP_UTF8) または die("ADO を開始できません");
//アクセスデータベースのオープンメソッド
//$conn->Open("プロバイダ=Microsoft.Jet.OLEDB.4.0; データ ソース=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db");
$conn->Open("ドライバー={SQL Server};サーバー={192.168.22.40};データベース=sugarcrm_db;UID=sa;PWD=123456;") ;
//クエリを実行してデータを出力します
$rs = $conn->Execute('SELECT * FROM accounts') or die ("error query");
?>
<テーブルボーダー="1''>
ID |
タイトル |
while (!$rs->EOF) {
echo '
';
echo ''. $rs->Fields['id']->Value .' | ';
echo ''. $rs->Fields['name']->Value .' | ';
echo '
';
$rs->MoveNext();
}
?>
表>
// リソースを解放します
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
?>