PHPをhtmlに読み込んだファイルが文字化けする

このQ&Aのポイント
  • HTMLファイルにWordPressを生成し、WPでブログを書いたファイルを読み込んで、文字化けが起こってしまう問題が発生しました。
  • Shift-JISで作成したHTMLファイルとUTF-8で生成されたWordPressのブログの文字コードの違いにより、ブログ部分のみ文字化けが発生しています。
  • charsetの設定を変更した結果、ブログ部分は表示されるようになりましたが、HTMLで作成した部分が文字化けする問題が発生しています。原因について教えていただけると助かります。
回答を見る
  • ベストアンサー

PHPをhtmlに読み込んだファイルが文字化けする

お世話になります。 通常のHTMLファイルにWordPressを生成し、WPでブログを書いたファイル(/wp/index.php)を読み込んで、表示させたいと考えております。その件に関してはなんとか表示できるようになったのですが、私が作ったhtmlファイル(/wp/index.html)はShift-JISで、 WordPressが吐き出してるブログ(/wp/index.php)はUTF-8で文字コードが違うので、ブログ部分のみ文字化けが起こります。それで上記のように/wp/index.htmlのcharsetをShift-JISからUTF-8へ変更しました。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ところが「テキストコーディングエラー」とポップアップが起こりました。「設定したテキストエンコーディングで保存済みですが、テキスト中のcharset設定と一致していないので、ブラウザ等で表示すると文字化けする可能性があります」とのことです。その結果、今度はブログ部分がちゃんと表示され、HTMLで作成した部分は文字化けするようになりました。これはPHPの問題ではないかもしれませんが、原因がどうにも分かりません。もしかしたら初歩的な質問をしているかもしれませんが、よければ教えていただけないでしょうか。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

HTML中のmetaタグcharset指定は、「そのHTMLデータがどの文字コードで記述されているか」をブラウザに教えるための設定情報にすぎません。 (現状ではcharsetではUTF-8と指定されているのに中身はShiftJISなので、矛盾しているとエラーメッセージが出ているわけです) 単にchasetを指定するだけではだめで、それとあわせて、wp/index.html の文字コードを、UTF-8 で保存しなおす必要があります。 UTF-8での保存方法は、そのhtmlファイルを編集するのに使っているエディタ次第ですので、 その具体的方法を示すことはできません。エディタのマニュアルか何かを参照してください。

toonie
質問者

お礼

回答ありがとうございました! 結構初歩的なことだったんですね、アドバイスの通りに修正したら文字化けはなくなりました。ありがとうございます。

関連するQ&A

  • PHP でデータファイルを別にすると文字化け

    PHPの初心者ですが、文字化けで困っています。 index.php には以下の内容を入れています。 <?php include("ja.php"); echo '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <p>'.$WELCOME_TEXT.'</p> </body> </html>'; ?> ja.php には以下の内容を入れています。 <?php $WELCOME_TEXT = 'ようこそ'; ?> これでindex.phpを表示させても「????」と出るだけなのですが、どうすれば文字化けがなくなるのでしょう?どちらのファイルもUTF-8のエンコードで保存しています。

    • 締切済み
    • PHP
  • 文字化けに関して

    文字化けが起きてしまって困っています。 PHPとMysqlを使用した、CMSを今あるサーバから別のサーバに移したいのですが、 新しいサーバに移すと文字化けをしてしまいます。 正確にはデータベースから読み込んでいる部分だけが文字化けしています。 index.phpにHTMLコードとして記述してある部分は文字化けしていません。 ブラウザ(IE)の「表示→エンコード」からUTF8を選ぶと逆に データベースの部分が正確に表示され、HTMLに直接書き込んだ部分が文字化けします。 現状でわかる範囲で書きます。 ・index.phpのmetaは <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> ・MYSQL(phpmyadminに書かれている)文字セットは UTF-8 Unicode (utf8) ・php.iniの設定 mbstring.language・・・japanese mbstring.internal_encoding・・・UTF-8 mbstring.encoding_translation・・・on mbstring.http_input・・・未設定 mbstring.http_output・・・未設定 default_charset・・・未設定 output_handler・・・未設定 output_buffering・・・未設定 magic_quotes_gpc・・・Off 詳しい方よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字化けについて質問です。

    文字化けについて質問です。 例えば、 text.txt(あいうえお) とテキストファイルにあります。 そのファイルを読み込んで、 echo "$a"; で表示すると、文字化けします。 ファイルの中身がaaaaaaのように英数字なら普通に表示されるのですが・・・ <meta http-equiv="Content-Type" content="text/html; charset=shift-jis" /> と今は定義しています。 utf-8にしても文字化けしてしまいます。 解決策はあるでしょうか?

    • ベストアンサー
    • HTML
  • [HTML-PHP]あるPHPファイルだけ文字化け

    お世話になります。 XP/PHP5.2.9/Apache2.2.11 の環境で、簡単なシステムを作っているのですが、その際に PHP側で header( "Content-Type: text/html;charset=shift_jis"); HTML側で <meta http-equiv="content-type" content="text/html; charset=shift_jis"> と明示的にSJISにしているのですが、実際にローカルで確認すると文字化けしてしまうPHPファイルがあります。(1ファイルのみ) 他のPHPファイルは同様のヘッダー情報を送信していますが、文字化けせずに画面出力されています。 HTML-PHP初心者のため、補足等必要になるとは思いますが、どうぞご教授下さい。

    • ベストアンサー
    • PHP
  • phpの更新機能を入れると文字化けしてしまいます。

    はじめまして。 新着情報などをWEB上から更新できるように、かなり昔に業者様からいただいた更新管理のphpファイルをいただきました。 なんとか作成していたhtmlファイルに該当のタグを挿入し、更新が反映されるようにはなったのですが、phpで反映された部分以外のほかのテキストの部分(漢字のみ)が文字化けしてしまいます。 おそらくphpファイルは <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> htmlファイルは <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> で書いてあることが原因だと思うのですが・・・ 文字化けを防ぐ方法はございますでしょうか? 恥ずかしながら。情報として何が必要かもわかっていませんので、補足要求などあればなんなりと言ってください。 業者様にいただいたのがかなり昔なので、連絡もままならない状態です・・・動くのが遅かった私が悪いのですが・・・ なにとぞよろしくお願致します。

    • ベストアンサー
    • HTML
  • phpファイルで文字化け

    お世話になります。 PHP4で作成しています。 あるPHPファイルが読み込まれたとき、 パラメータが引き渡されているか確認し、 引き渡されていない場合には、 別のページにジャンプするように以下のように作成しています。 if ($aaa==""){ header("Location: aaa.php" ); }else{ header("Conten-type: text/html; charset=Shift_JIS"); } 通常、aaa.phpファイルは文字化けしないのですが、 このファイルから自動的に飛んだときに 文字化けで表示されてしまいます。 ブラウザの更新ボタンをクリックすると、 きちんと表示されるようになります。 文字化けした時のエンコードを見ると 西ヨーロッパ言語になっています。 aaa.phpファイルでも、 charset=shift_jis と指定しているのですが、 何が原因でしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • HTMLの文字化け

    自分で立ち上げたサーバへWindoswで作成したHTMLをアップしてブラウザから表示の確認をしてみたところ、日本語が文字化けてしまいました。 ヘッダーには <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> として、文字コードをUTF-8にしてあるのですが、この部分を <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> とShift-JISにしてみると、日本語の文字化けが解消します。 できればcharset=UTF-8の状態で文字化けせずに表示してくれるようにしたいのですが・・・ どなたか原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。 テキストエディタはK2Editorを使用しており、「保存時の文字コードと改行種類の変更」でHTMLファイル自体の文字コードは「Shift-JIS」、改行コードは「CRLF」としております。 サーバは、CentOS5.4を使用しており、 コマンドで # printenv | grep LANG の結果は、 LANG=ja_JP.UTF-8 となっております。

    • ベストアンサー
    • HTML
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • 自分で書いたPHPスクリプトが、文字化けしてる

        テキストエディタでPHPのスクリプトを書いて サーバにアップしてブラウザで表示すると、文字化けしてしまいます。 手動でブラウザのエンコード設定をしなおすと正常に表示されるんですが ページ更新したらデフォルトで文字化けしてます。 PHPスクリプトを書いて、アップロードしてブラウザで表示する時に 文字化けしないようにするには、どうすればいいのでしょうか? 以下のコードは書いていますが、文字化けします↓ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">    

    • ベストアンサー
    • PHP
  • 文字化けで困っています(mySQL4.1のデータをphpで取得)

    phpでmySQLのデータベースからデータを取得し表示させたいと思っています。 文字化けしてしまい、???で表示され困っています。 <環境> レンタルサーバーのMySQL - 4.1.16を使用しています。 Variable_name Value character_set_client utf8 character_set_connection ujis character_set_database ujis character_set_results utf8 character_set_server ujis character_set_system utf8 character_sets_dir /usr/local/mysql-4.1.16/share/mysql/charsets/ レンタルサーバなので、my.cnfを変更することはできず、.htaccessファイルに AddType "text/html; charset=Shift_JIS" html,php AddCharset Shift_JIS .html,php など書いてみたり、phpファイルに、 header('Content-Type:text/html; charset=Shift_JIS'); <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> mysql_query("SET CHARACTER SET SJIS"); など書いてみましたが、変わりませんでした。 わかりにくい説明で申し訳ありませんが、文字化けを直す方法をご存じの方、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう