初歩的な質問ですが、回答いただけると幸いです。
phpファイル内で、SQL文を実行し
結果をブラウザに表示すると日本語の部分が文字化けしています。
$dbh->query('SET NAMES utf8');で文字コードを指定しているつもりなのですが、
原因はどこにあるのでしょうか?
php
1 2$dsn = 'pgsql:dbname=xxxxx host=aa.aaa.aa.aaa port=bbbb'; 3$user = 'test'; 4$password = 'password'; 5 6try{ 7 $dbh = new PDO($dsn, $user, $password); 8 $dbh->query('SET NAMES utf8'); 9}catch (PDOException $e){ 10 print('Error:'.$e->getMessage()); 11 die(); 12} 13 14 15$sql = "select mm, avg(an01) from aaaa group by mm"; 16$rows = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); 17 18foreach ($rows as $row) { 19 20 // データベースのフィールド名で出力 21 echo $row['mm'].':'.$row['avg'].'人'; 22 23 // 改行を入れる 24 echo '<br>'; 25} 26
phpのエンコーディング
※確認方法は以下の通りです。UTF-8とでました。
php
1// 対象ファイル 2$file_name = 'aaaa.php'; 3 4// 全体ではなく0~1024までを取得 5$contents = file_get_contents($file_name, NULL, NULL, 0, 1024); 6 7// エンコーディング 8$encodings = array('UTF-8', 'EUC-JP', 'SJIS'); 9foreach ($encodings as $encodingsVal){ 10 // 判定 11 if ($contents == mb_convert_encoding($contents, $encodingsVal, 'auto')){ 12 echo $encodingsVal; 13 break; 14 } 15}
DBのエンコーディング
※確認方法は以下の通りです。UTF8とでました。
SQL
1SELECT character_set_name FROM information_schema.character_sets;
回答1件
あなたの回答
tips
プレビュー