文字エンコードの設定について
前回、PHPからデータベースへの登録について質問させていただきました。
今回はデータベースに登録した情報をブラウザ上で呼び出す際の
文字エンコードの設定について質問させていただきます。
お手数おかけいたしますがよろしくお願い致します。
以下、一部は省略していますが動作環境とソースの内容です。
DBサーバー : EUC
Webサーバー : Shift_JIS
呼び出す側のPHP : EUC
▼ dataload.php
****************************************************************************
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
</head>
<body>
<?php
ini_set("mbstring.internal_encoding", "eucjp");
ini_set("mbstring.http_output", "eucjp");
// データベースに接続
~ 省略 ~
// データベースの選択
~ 省略 ~
$str_sql = "select * from FORM_DATA";
$sql_re = mysql_query('SELECT * FROM FORM_DATA', $db);
while ($data = mysql_fetch_array($sql_re)) {
echo '<p>' . $data['DataNumber'] . ':' . $data['Time'] . ':' . $data['Name'] . ':' . $data['Email'] . ':' . $data['Area'] . ':' . $data['Sex'] . ':' . $data['Interest'] . ':' . $data['Comment'] . ':' . $data['OS'] . ':' . $data['IP'] . "</p>\n";
}
#$rs = mysql_query($sql_re,$db);
#if(!$rs) {
# exit('<br /><br />Error! データの呼び出しに失敗しました。');
#}
// データベース接続を閉じる
$db = mysql_close($db);
if (!$db) {
exit('データベースとの接続を閉じれませんでした。');
}
else{
print "データベースとの接続が切れました。<br />";
}
?>
<br />登録データの呼び出し完了しました。<br /><br />
<a href="index.php">最初に戻る</a>
</body>
</html>
************************************************************************
PHPソースの内容は以上です。
動作的には問題なくDB内の情報が表示されます。
ただし、ブラウザの文字コードが「Shift_JIS」のまま切り替わらず、
ブラウザの文字エンコードを「EUC」に変更しなければ文字化けしてしまう状況です。
<meta>で文字コードを指定し、ini_set()でさらに「EUC」を指定してあるのですが
アクセスした時点では文字コードは変わらず文字化けてしまいます。
ini_set("mbstring.internal_encoding", "eucjp");
ini_set("mbstring.http_output", "eucjp");
まだまだ勉強不足で根本的に抜けている点があるかもしれませんが、
可能なら解決策をご教授いただけますと助かります。
よろしくお願い致します。
お礼
ありがとうございました