重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

前回、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");

まだまだ勉強不足で根本的に抜けている点があるかもしれませんが、
可能なら解決策をご教授いただけますと助かります。

よろしくお願い致します。

A 回答 (1件)

Webサーバの設定で


AddDefaultCharset Shift_JIS
になっているでしたら meta タグで指定しても変更されません。
この場合「httpd.conf」を管理者にお願いして変更するか「.htaccess」で設定します。

変更内容は
AddDefaultCharset Off
です

サーバの利用形態がわかないので適切な回答ではありません、サーバ管理者に相談されて変更は行ってください。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

事情によりサーバー側の設定は変更できません。
説明不足で申し訳ありません。

入れ違いとなりましたが、下記の設定をソースの最初に追加しましたら解決しました。

<?php header("Content-type: text/html; charset=EUC-JP") ?>

ありがとうございます!

お礼日時:2012/08/17 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!