- 締切済み
文字エンコードの設定について
前回、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"); まだまだ勉強不足で根本的に抜けている点があるかもしれませんが、 可能なら解決策をご教授いただけますと助かります。 よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
お礼
早速のご回答ありがとうございます。 事情によりサーバー側の設定は変更できません。 説明不足で申し訳ありません。 入れ違いとなりましたが、下記の設定をソースの最初に追加しましたら解決しました。 <?php header("Content-type: text/html; charset=EUC-JP") ?> ありがとうございます!