• 締切済み

更新を繰り返すと文字化けが起きてしまいます...

お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>文字化けを起こした時にソースを表示すると >日本語が正しく見れる状態になっていたので >シフトJISになってしまっているようで… ソース表示に何を使われているかわかりまえんが、もし「メモ帳で文字化けしない」ということだと、HTTPヘッダやmetaタグではEUC-JPを指定しているのに、中身がSJISで出力されているという状態だと思われます。スクリプトからSJISで出力してしまう原因を探したほうがいいような・・ 実際の記述などは全部EUC-JPで、mb_internal_encodingもEUC-JPですよね?出力制御系の関数なども何を使っていないということでよろしいでしょうか?

niko06
質問者

お礼

ご回答有難う御座います ソース表示にはメモ帳を使用しています(失礼しました) で、mb_internal_encodingを</html>の直下で出力して 確認をした所、EUC-JPやUTF-8になる事がわかりました なので、プログラムの最初に <? header("Content-Type: text/html;charset=EUC-JP"); mb_internal_encoding("EUC-JP"); ?> と内部エンコーディング定義を行った所 EUC-JPに統一されるようにはなったのですが やはり文字化けは起こってしまうみたいです (mb_internal_encodingの使い方間違っていたら申し訳無いです...) 記述はEUC-JPです。出力制御系の関数は使用してません

回答No.1

ブラウザの文字コード認識がたまにできないためと思います。 回避方法としては、html内のどこでも良いので、 <!-- 京 -->もしくは、<!-- 美乳 --> 好みの方を入れてみて下さい。 この文字の理由ですが、京や美、乳はEUCコードで、B5 FE、 C8 FE、 C6 FD となります。 これは、0xFDや0xFEがShift_JISコードでは出現しないため、 ブラウザ側がEUCであると判別できます。 また、京はyahooでも使われているようです。

niko06
質問者

お礼

お世話になります ご回答有難う御座います 以下の様に記述を追加してみました  <? header("Content-Type: text/html;charset=EUC-JP"); ?>  <html lang="ja">  <head>  <meta http-equiv="content-type" content="text/html; charset=EUC-JP">  <meta http-equiv="content-style-type" content="text/css">  <meta http-equiv="content-script-type" content="text/javascript">  <!-- 京 --> しかし、やはり更新を繰り返すと文字化けが起きてしまうみたいで… ただ、文字化け間隔が10回に1回の割合になりましたので 認識ミスは多少回避されているんだと思います

関連するQ&A