• ベストアンサー

ブラウザでhtmlファイルを読み込むと、時たま文字化けが発生します。

自宅サーバーでUTF-8で記述したhtmlをブラウザで読み込んだ所、 時たま文字化けが発生します。 apacheを再起動した上で、 同じhtmlを再読み込みすると文字化けが解消する為、 apacheのどこかに問題があると思うのですが、 どこに問題があるかアドバイスいただける方が いらっしゃいましたらよろしくお願いします。 なお環境は下記のようになっております。 OS:CentOS5.1 apache:2.2.8 PHP:4.4.8

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

ブラウザの文字コード判断は以下のように行われます。 (1) htmlページのheadの中のmetaタグで文字コードを指定した場合はそれに従う(<meta http-equiv="Content-Type" content="text/html;charset=..."> ) (2) それが無くてapacheの設定でhtmlファイルの文字コード設定がある場合はそれに従う (AddCharsetまたはAddDefaultCharsetディレクティブ) (3) どちらも無指定なら、ページを見て推測する(文字によっては間違って判断されることもある) ほとんどのページは、(1)で指定されているようです。

iroha_168
質問者

お礼

ありがとうございます。 教えていただいた件について、自分の環境を調査してみました。 (1) について html内に下記の記述がありました。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> (2) について /usr/local/apache2/conf/httpd.confには AddCharsetもAddDefaultCharsetも存在しませんでした。 (3) について (1)でUTF-8にしている為、常にUTF-8としてみてほしいのですが、まれに間違って判定されてしまうようです。 apacheを再起動すれば直るのですが、いまだに原因の特定は出来ずにいます。

iroha_168
質問者

補足

結局解決していませんが、投稿より日にちが経ちすぎ回答がつきそうにないので、クローズさせていただきます。

関連するQ&A

  • htmiファイルの文字化け

    htmlファイルのメタタグを以下のように設定、ファイルの文字コードもShift_JISで保存し、 2つのサーバーへアップしたところ、片方のサーバー(hetemlのレンタルサーバー)では 文字化けせずに表示されるのですが、もう片方のサーバー(自前サーバー、CentOS)では 文字化けしてしまいます。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> そこで文字化けする方のサーバーのhttpd.confの設定で AddDefaultCharset UTF-8 の部分をコメントアウトし、apacheを再起動したのですが、いっこうに文字化けが直りません。 この場合、何かほかの設定が影響してることなのでしょうか? ちなみに、文字化けするサーバーへ各ブラウザでアクセスしたところ 以下のように文字化けするブラウザとしないブラウザがあります。 FireFox 文字化け IE(9)  文字化けしない Chorome 文字化けしない ブラウザによって文字化けするしないの原因もよくわかりません。 どなたか、ご教授いただけると幸いです。 よろしくお願いします。

  • PHPの動作テストとしてブラウザで表示させたファイルが文字化けします。

    PHPの動作テストとしてブラウザで表示させたファイルが文字化けします。 XamppでApacheやPHPをインストールし、 以下のサイトのサンプルファイルを作成し、ブラウザでアクセスしたところ、 >今日の日付は 2010年05月03日です。 の一文の、「年」だけが文字化けしてしまうのは何故でしょうか。 http://www.adminweb.jp/xampp/php/index4.html php.iniのmbstringの設定はこちらに書かれているように設定しました。 http://www.adminweb.jp/xampp/php/index2.html ブラウザのエンコード設定はShift_JISにしています。 UTF-8にするとほとんど文字化けしてしまいます。

    • ベストアンサー
    • PHP
  • 文字化けが発生する

    Apache 2.0.54、PHP 5.0.4それから、MySQL 4.1.14でPHPのテスト環境をWindowsXP上に作りました。PHPとMySQLの設定ファイルで文字コードを、UTF-8に統一してほかのMySQL(4.0.12)からダンプしたファイルをUTF-8に変換した後にMySQL 4.1.14にインポートしました。 phpMyAdmin上からは文字化けなしにインポートしたファイルが見れるのですが、なぜか自分で書いたPHPスクリプトではデータ部分がすべて「?」に変わってしまいます。ブラウザの文字コードを変えても?で、試しにそのデータ部分のエンコードをPHP上から調べてみると「ASCII」になっていました。また、MySQLの環境変数のcharacter関係の変数はすべてUTF-8になっています。 データをUTF-8で出力したいのですが、どのようにすればいいでしょうか? 下が、コマンドラインから変数を参照した結果です。 mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+------+ | Variable_name | Value| +--------------------------+------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\Program Files\ MySQL\MySQL Server 4.1\share\charsets/ | +--------------------------+------+

    • ベストアンサー
    • MySQL
  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • 文字化けに関して

    文字化けが起きてしまって困っています。 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
  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • Webシステムで文字化けが発生し困っています。

    Webシステムで文字化けが発生し困っています。 WWW:IIS+ASP データベース:postgresql 7.4.3 データベース(別サーバ:Linux)には、utf-8でデータが格納されています。 それを、WWWサーバ(windows2000Server)上のASPから、odbc経由で参照しようとすると、文字化けが発生します。 下記の方法を試しましたが駄目でした。 1)basp21のkconvを利用 2)metaタグに、utf-8と記載。  (ファイル自体のエンコードもutfにした) 1)2)のやり方が悪いのか?他に問題が有るのか?お分かりになる方、どうぞ、よろしくお願い致します。

  • PHP4からPHP5にしたときのDB文字化けについて

    よろしくお願い致します。 すでに、PHP4で作っていたサイトで、DBにもいろいろと登録していたのですが、PHP5にしたい事情が出てしまい、PHP5にしました。 すると、すでに登録されていた、DBの内容が文字化けしてしまいました。 PHP4(UTF8)+MySQL5(UTF8) → PHP5(UTF8)+MySQL5(UTF8) 情報足りませんでしたら申し訳ないです、申し付けて下さい。 phpMyAdminから見たときは、すでに入っていたDBの内容は文字化けはしていないのですが… 次にPHP5で新しく登録した場合は、サイトでの表示は文字化けしないのですが、次はphpMyAdminで見ると文字化けしていました。 php.iniの設定も同じにしてます、Apacheのconf設定なども見たのですが、文字化けは解消しませんでした。 よろしくお願い致します。

    • 締切済み
    • PHP
  • 文字コードEUCのPerlプログラムが文字化けしてしまいます

    Perlで書かれたCGIを実行しようとしているのですが、プログラムはEUCで記述されているそうです。nkf -g ***とするとEUC-JPとなります。 print " <META http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n"; とも記述されているのですが、ブラウザで実行(閲覧)すると文字化けして、ブラウザのエンコードは、Unicode(UTF-8)になっています。 ちなみに、OSはCentOS5.2です。 どうやったら、EUCで記述されたCGIが文字化けせずに実行できるのでしょうか? teratermでサーバに接続語、viコマンドで表示しても文字化けしています。ファイルの文字コードをEUCからUTF-8にして(nkf -w ***)、ブラウザでアクセスしても文字化けしてしまいます。

    • ベストアンサー
    • Perl
  • PHP+MyAdmin INSERT文字化け

    PHPを利用しテキストファイルのアップロード、その後ファイルを読込INSERT。 上記のような流れでデータベースに値を代入するスクリプトを作成中ですが タイトルの通り、代入すると文字化けが起こり、上手く代入する事が出来ません。。。 初歩的なご質問かと思いますが宜しくお願いします。 データベース ・phpMyAdmin さくらインターネット レンタルサーバー利用 ・全てUTF-8のカラム設定 PHP/HTMLファイル ・全てUTF-8フォーマットにて保存・アップロード INSERTに利用するファイル ・某サイトよりダウンロードしたSJISフォーマットのテキストファイル(タブ区切り) 実際の動作(1) 1.テキストファイルダウンロード 2.ブラウザよりテキストファイルアップロード 3.ブラウザよりテキストファイル読込・代入 【結果】文字化け発生 実際の動作(2) 1.テキストファイルダウンロード 2.一度テキストエディタで開きSJIS⇒UTF-8へ保存 3.FileZillaにてサーバーへアップロード 4.ブラウザよりテキストファイル読込・代入 【結果】正常 実際の動作(3) アップロードするPHPへ mb_convert_encoding($FILE,"UTF-8","AUTO") mb_convert_encoding($FILE,"UTF-8","SJIS") mb_convert_encoding($FILE,"UTF-8","SJIS-WIN") 等の記述を変更しながら実験 【結果】文字化け発生 Googleにて色々検索しマルチバイト関数を有効にとの情報があり http://manual.xwd.jp/ref.mbstring.html を参考に設定 (1)(2)(3)を実行するが文字化けは変わらず。 アップロード後の文字エンコード判定を実施 http://www.phppro.jp/qa/388 ・ダウンロードそのままをブラウザよりアップロード ・テキストダウンロード後、エディタにてUTF-8に保存したファイルをブラウザよりアップロード どちらもSJISと判定される。 記述方法も曖昧なまま setlocale(LC_ALL, 'ja_JP.UTF-8'); も実験しましたが無理でした。 SQL実行前に $test = mysql_query('SET NAMES utf8', $link) or die("文字コードを指定できませんでした。"); $test = mysql_query($sql, $link) or die("クエリの送信に失敗しました。"); の記述も問題なのでしょうか。 問題はアップロード時に問題、、、? サーバー側の設定の問題、、、? 正直お手上げです。(涙 どうかご教授お願いいたします。

    • ベストアンサー
    • MySQL