• 締切済み

文字エンコードの設定について

前回、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"); まだまだ勉強不足で根本的に抜けている点があるかもしれませんが、 可能なら解決策をご教授いただけますと助かります。 よろしくお願い致します。

みんなの回答

noname#259146
noname#259146
回答No.1

Webサーバの設定で AddDefaultCharset Shift_JIS になっているでしたら meta タグで指定しても変更されません。 この場合「httpd.conf」を管理者にお願いして変更するか「.htaccess」で設定します。 変更内容は AddDefaultCharset Off です サーバの利用形態がわかないので適切な回答ではありません、サーバ管理者に相談されて変更は行ってください。

Novice4649
質問者

お礼

早速のご回答ありがとうございます。 事情によりサーバー側の設定は変更できません。 説明不足で申し訳ありません。 入れ違いとなりましたが、下記の設定をソースの最初に追加しましたら解決しました。 <?php header("Content-type: text/html; charset=EUC-JP") ?> ありがとうございます!

すると、全ての回答が全文表示されます。

関連するQ&A