【事象】
ローカル環境でDBからデータ取得すると日本語が「?」で表示されてしまう。
【詳細】
phpMyAdminコントロールブラウザ上で、sqlを送ると正しく表示されているが
PHPを使用し日本語文字列を取得し、ブラウザ上にechoすると「?」で表示される。
カラムの設定の「照合順序」でUTFを指定し、ブラウザでもUTF表示にしているが正しく表示されない。
HTMLのソース上も「?」となっている。
*すべての主要ブラウザで発生します。
*この事象は突然発生しました。以前は問題なく動いていました。少し厄介かもしれません…
「phpMyAdminコントロールブラウザ上のデータ取得時」
「phpMyAdminコントロールブラウザ上のカラムの構造」
【知りたいこと】
直接の原因。
つまりどこからデータが破損しているか教えていただきたい。
もしくは、DBからPHPでデータを取得する際のデバッグ方法。
【環境】
windows10
Xammp(mysql,apach)
【ソースコード】
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name=viewport content="width=device-width, initial-scale=1"> <title>日本語出力テスト</title> </head> <?php //DBへの接続 $mysqli = new mysqli("127.0.0.1", "admin", "aaaa", "nihongotest"); // 接続状況チェック if(mysqli_connect_errno()){ die('接続失敗です。'.mysqli_connect_error()); } $sql = "SELECT moji FROM nihongo"; unset($db_data); if ($result = $mysqli->query($sql)) { while ($row = $result->fetch_assoc()) { $db_data[] = $row; } $result->free(); } echo '<table border="1">'; for($i=0;$i<count($db_data);$i++){ echo '<tr>'; echo '<td>' . $db_data[$i]['moji'] . '</td>'; echo '</tr>'; } echo '<td>' . count($db_data) . '<td>'; echo '</table>'; ?> </body> </html>
回答2件
あなたの回答
tips
プレビュー