みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPとMySQLの文字化け

DBを呼び出すPHPファイルを"Shift_JIS"で作りました。
ですが、レンタルサーバーのPHP、MySQLの文字コードが"EUC-JP"との事で、
全てのファイルに読込んでいるインクルードファイルの文字コードの記述をShift_JISからEUC-JPに変更しました。
ですが、DBから呼び出してるデータは文字化けしないのですが、その他がすべて文字化けしてしまい、JavaScriptも動かない状態です。
各phpのファイルは、最後に$body で書き出す記述をしているので、
$body = mb_convert_encoding($body,"SJIS","EUC-JP");
print $body;
と実行してみてもだめでした。
どうか教えて下さい。よろしくお願い致します。
---共通インクルードファイル----
省略
//MySQL読み込み時の文字コードを設定
mysql_query("set names EUC-JP");

//データベースを選択します
mysql_select_db($DBNAME,$db);

function htmlheader($pagetitle)
{
//各ページのヘッダ部のHTMLを組み立てる
$strret = "<DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<HTML>
<HEAD>
<META http-equiv='Content-Type' content='text/html; charset=EUC-JP'>
<META http-equiv='Content-Style-Type' content='text/css'>
<TITLE>$pagetitle </TITLE>
</HEAD>
<body border='0' cellpadding='0' cellspacing='0' width='100%'>
<br>";
return $strret;
}
function htmlfooter()
{
//各ページのフッタ部のHTMLを組み立てる
$strret = "<br>
</BODY>
</HTML>";
return $strret;
}
?>

投稿日時 - 2006-12-24 17:22:25

QNo.2622881

すぐに回答ほしいです

質問者が選んだベストアンサー

>各phpのファイルは、最後に$body で書き出す記述をしているので、
>$body = mb_convert_encoding($body,"SJIS","EUC-JP");

つまりMySQLの文字コードを EUC-JP で出力して SJIS に変換して表示しているのですよね。
その場合ページの文字コードはSJISですから

<META http-equiv='Content-Type' content='text/html; charset=EUC-JP'>

ではなく

<META http-equiv='Content-Type' content='text/html; charset=Shift_JIS'>

と宣言しなければならないのではないでしょうか?

投稿日時 - 2006-12-27 15:52:48

お礼

ご回答ありがとうございます。
全体をcharset=Shift_JIS'で宣言して、データベースを読み込む際にはEUC-JP、呼び出した後にひとつづつ、mb_convert_encodingでSJISに変換したら、うまくいきました。ありがとうございました。

投稿日時 - 2006-12-30 13:53:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

PHPもMySQLもそれほどよく知らないので的外れだったらごめんなさい。SJISで作ったものをEUC-JPで読み込もうとしたら文字化けするのは当然のような気がします。該当ファイルをEUC-JPで作り直したらうまくいくのではないでしょうか。

投稿日時 - 2006-12-24 18:22:44

補足

作ったPHPファイルの中には、インクルードファイルをSJISからEUC-JPに変えただけで動いているファイルもあるのですが・・・。
文字化けしていないPHPファイルは、最後に$body で書き出す記述をしていないものです。htmlのテーブルのなかに、<?php $data ?>と書き込んでいるタイプのものです。それは、DBから呼び出しているデータもhtmlの文字も文字化けしていません。(説明が下手で申し訳ありません)

投稿日時 - 2006-12-24 18:50:23

あなたにオススメの質問