PHPからMSSQLへの接続結果の文字化け
PHPからMicrosoft SQLserverのデータベースへ接続を行い、データベースの内容をブラウザへ表示したいのですが、日本語が文字化けして困っております。
導入するまでの手順を書きます。
参考にしたページ
http://chorusde.hatenablog.jp/entry/20120621/1340300814
(1)マイクロソフトのホームページより「SQL Server Driver for PHP」をダウンロード、解凍。
(2)自分のPHPバージョンを確認。
Apache/2.4.4
PHP/5.4.19
MSVC9
Thread Safety/enabled
上記の環境からphp_pdo_sqlsrv_54_ts.dllとphp_sqlsrv_54_ts.dllを使用することを決定。
(3)C:\xampp\php\extの下に(1)で解凍したフォルダ内にあるphp_pdo_sqlsrv_54_ts.dllとphp_sqlsrv_54_ts.dllをコピー。
(4)C:\xampp\php\php.iniを開き、「extension=」と書いている951行あたりに
「extension=php_pdo_sqlsrv_54_ts.dll」
「extension=php_sqlsrv_54_ts.dll」
を追加
「mssql.secure_connection = OFF」を「ON」に修正
(5)XAMPPコントロール画面でApacheとMySQLを再起動。
その後、以下のコードで実行したところ日本語が文字化けしました。
以下のコードはこのページのサンプルコードをそのままコピペし少し修正したものです。
http://keicode.com/cgi/how-to-connect-to-mssql.php
<?php
$serverName = 'SQLEXPRESS';
$connectionInfo = array(
'UID' => 'username',
'PWD' => 'password',
'Database' => 'shop'
);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ){
echo "Cound not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
$tsql ="SELECT * from food";
$stmt = sqlsrv_query( $conn, $tsql );
if( !$stmt ) {
die( print_r( sqlsrv_errors(), true));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC)) {
print_r($row);
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
このソースを実行しますと日本語が文字化けしてしまいます。(データを英語表記にすれば問題なく表示できます)
文字化けせずにブラウザに結果を表示するためにはどのようにすればよいでしょうか?
またSQL文の「"SELECT * from food"」の"food"の部分(テーブル名)を「食品」と日本語名に変更するとsql文が実行できなくなりエラーを起こします。
おそらく文字化けしてSQL文を認識してしまうため「そんなテーブル名はありませんよ」と怒られてしまうのだと思います。
初心者で凝縮ですが、どなたかアドバイスをお願いいたします。