XAMPPの設定で.phpファイルが文字化けする問題の解決方法

このQ&Aのポイント
  • WindowsでXAMPPをインストールしてApache、PHP、MySQLを使用していますが、.phpファイルが文字化けしてしまいます。改善方法を教えてください。
  • XAMPPの設定でPHP.iniファイルの「mbstring.internal_encoding」パラメーターをUTF-8に設定しても、.phpファイルの文字化けが解消されません。詳しい解決方法をお知りの方、ご教授ください。
  • XAMPPのページで一部の文字が文字化けしています。何か設定が誤っているのでしょうか?解決方法を教えてください。
回答を見る
  • ベストアンサー

XAMPPの設定

Windowsに XAMPPでApache、PHP、MySQLをインストールしていますが、 .phpファイルが文字化けしてしまいます。 また、http://localhost/XAMPPのページも一部文字化けしてしまって いる状態です。 どうすれば改善できるでしょうか? ちなみに、PHP.iniファイル内の「mbstring.internal_encoding」のパラメーターはUTF-8に 設定しました。。。。 参考にしているサイトは、以下です。とにかく順番通りにやっていきました。 「PHPの設定と利用のサンプルコードを使ったPHPの確認」でつまづいています。 http://www.adminweb.jp/xampp/ どなたかご教授下さい。

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

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

ブラウザの文字コードの設定で、Shift_JISとかeuc-jpとかに固定してしまっているのでは? 設定を確認してみてください。

関連するQ&A

  • xamppのMySQLの文字化け

    いつもお世話になっております。 xamppをインストールし、開発を行っております。 formでsubmitし、DBに登録すると文字化けを起こします。 MySQLは下記項目を追加しました。 C:\xampp\mysql\bin\my.ini -------------------------------------------------- [client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake character_set_server=utf8 init-connect=SET NAMES utf8 (ここに default-character-set = utf8 を追加するとMySQLが起動しなくなります。) [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 php.iniは下記のように設定してあります。 php.ini -------------------------------------------------- mbstring.detect_order auto mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input UTF-8 mbstring.http_output UTF-8 mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) mbstring.internal_encoding UTF-8 mbstring.language Japanese mbstring.strict_detection Off mbstring.substitute_character no value 日本語が正しく登録されていれば、表示は正しくされます。 おかしな部分、足りない部分等ありましたら、ご教示ください。 よろしくお願いいたします。 [環境]  MySQL:5.5.8  PHP:5.3.5  xampp:1.7.4

    • ベストアンサー
    • MySQL
  • PHPがローカル環境でのみ文字化けする

    PHPをApache2.0上でローカルテストすると、ブラウザ表示がどうにも文字化けしてしまいます。 EUCで組んだスクリプトをmb_convert_encodingでSJISに変換して出力しているのですが、本番用のサーバーではきちんと動作するのに、ローカル環境ではブラウザがEUCと認識してしまっているようで、文字化けが発生します。 99%php.iniかapacheの設定がおかしいのですが、どこがおかしいか見てはいただけないでしょうか。 php.iniのそれっぽい部分 mbstring.encoding_translation = Off mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = Off mbstring.detect_order = auto mbstring.substitute_character = none; ;mbstring.func_overload = 0 なお、Apacheのhttpd.confにAddDefaultCharset項目はありませんでした。 特殊要因としてApacheがXAMPPの中で制御されていることなのですが、php.iniはApacheのbinディレクトリ内のものを編集しています。 以上です。 どうかよろしくお願いします。 WinXP SP3 PHP 5.28 Apache 2.0 XAMPP 1.7.0 ※ApacheとXAMPPはPleiadesにてEclipseを導入したときについてきたもの。

    • ベストアンサー
    • PHP
  • MySQLの文字化けが直りません。

    MySQLの文字化けが直りません。 CentOS5.4+Apache2.0+ PHP 5.1.6 MySQL Server, Client とも 5.0.77 を使用しています。 設定は次の通りですが、Windows7 のクライアント機から見ると文字化けしてしまいます。 # mysql -p root -p*** (エラーを生じさせてみる) ERROR 1049 (42000): 'root' 、ハ、?ニ・ヌ。シ・ソ・ル。シ・ケ、マテΤ熙゛、サ、・ ************************************************** mysql> status Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 -------------- php.ini は次の設定です。 1123 [mbstring] 1125 mbstring.language = Japanese 1130 mbstring.internal_encoding = UTF-8 1133 mbstring.http_input = auto 1137 mbstring.http_output = UTF-8 1144 mbstring.encoding_translation = Off 1148 mbstring.detect_order = auto 1152 mbstring.substitute_character = none; 文字化けを直すにはどのようにすれば良いでしょうか?

    • ベストアンサー
    • MySQL
  • windowsXP、XAMPPでメーラーMercuryを使用してローカ

    windowsXP、XAMPPでメーラーMercuryを使用してローカルでメールしたとき受信メールの SubjectがSubject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?=と文字化けします。 文字化けしないようにはどうすればいいのでしょうか。 下記内容がメールしたときのPHP、php/php.ini、メールの内容です。 また図がMercuryの設定内容です。 PHPの内容################################################################################# <?php $from = "admin@localhost"; $to = "admin@localhost"; $subject = '日本語サブジェクト'; $body = "本文です。\n日本語テスト"; //送信処理(日本語メール特有の文字コード変換とかヘッダの処理をする) $body = mb_convert_encoding($body, 'iso-2022-jp', 'UTF-8'); $subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8'); $subject = mb_encode_mimeheader($subject, 'iso-2022-jp'); $headers[] = "From: $from"; $headers[] = 'Content-Type: text/plain; charset=iso-2022-jp'; $headers[] = 'Transfer-Encoding: 7bit'; mail($to, $subject, $body, join("\n", $headers)); ?> xampp/php/php.iniの内容################################################################################# [mail function] SMTP = localhost smtp_port = 25 sendmail_from = postmaster@localhost sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" mail.add_x_header = Off mail.log = "C:\xampp\apache\logs\php_mail.log" [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = UTF-8 メールの内容################################################################################# Received: from spooler by localhost (Mercury/32 v4.72); 26 Sep 2010 22:09:23 +0900 X-Envelope-To: <admin@localhost> Return-path: <postmaster@localhost> Received: from localhost (127.0.0.1) by localhost (Mercury/32 v4.72) with ESMTP ID MG000001; 26 Sep 2010 22:09:22 +0900 To: admin@localhost Subject: =?ISO-2022-JP?B?GyRCRnxLXDhsJTUlViU4JSclLyVIGyhC?= From: admin@localhost Content-Type: text/plain; charset=iso-2022-jp Transfer-Encoding: 7bit 本文です。 日本語テスト

    • ベストアンサー
    • PHP
  • PHPとMYSQLの文字コードについておねがいします。

    Apache2、PHP5、MYSQL5.0を使用しています。 当方、PHPの初心者講座などを見てUTF-8で作っていこうと思い設定をしたものの、上手くいかず質問させていただきました。 PHPからQuery文(日本語)を送ってMYSQLのテーブルにINSERTしたのですが、文字化けしてしまいます。 my.iniのdefault-character-set=部分をutf8からsjisやujisなどに変えてやってみたのですが、文字化けの種類(?)が変ってしまうだけでやはり文字化けしてしまいました。 ALTER DATABASE AAA CHARCTER SET utf8をやっても変らず文字化けしてしまい、show variables like 'char%'でCharcterを調べたところ、下記のようになっていました。 charcter_set_client | utf8 charcter_set_connection| utf8 charcter_set_database | utf8 charcter_set_filesystem| binary charcter_set_results | utf8 charcter_set_server | utf8 charcter_set_system | utf8 MYSQLとPHPの文字に関係あるようなところをコピーしました。 どこかおかしなところがあるでしょうか。 ------my.ini----- [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 ----------------- ------php.ini----- output_buffering = Off extension=php_mbstring.dll [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On ------------------ どなたか解決策を知らないでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • Fatal error: マルチバイト文字列関数

    Fatal error: Call to undefined function mb_convert_encoding() 上記のようなエラーが出てしまい、困っています。 現状、phpinfo()で調べてみると 出現するはずのmbstringという項目がありません。 php.iniの状態が悪いのかと調べてみると extension=php_mbstring.dll の前には、;が無い状態です。 他の設定はこのようになっています。 mbstring.language = Japanese; mbstring.internal_encoding = UTF-8 ; mbstring.encoding_translation = On mbstring.http_input = auto ; mbstring.http_output = UTF-8 ; mbstring.detect_order = auto ; mbstring.substitute_character = none ; php.iniというファイル自体が2つあるとこのようなエラーがでるという 事例もあったので、検索をかけてみましたが php.iniというファイルは一つしか見つかりませんでした。 また、PHP自体、mb_の付く関数をはずすと、文字化けはしますが きちんと動いてくれました。 動作環境は win PHP5 Apache です。 どこを改善すれば、直ってくれるでしょうか? 教えて頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの内部文字コードを設定できない

    環境はWindows 8.1+PHP 7.0.1です。 php.iniのmbstring.internal_encodingがPHP5.6で非推奨になったので、 default_charsetで文字コードを設定しています。 ところが、default_charsetの値を変えても、以下の結果が変わりません。 echo mb_internal_encoding(); mbstring.internal_encodingを変更すると、確かに反映されるのですが、 default_charsetの値はmb_internal_encoding()には反映されないのでしょうか。 もともとは、mb_check_encodingで判定に利用する文字コードを、php.iniで設定したかったのですが、現在はこれを利用するにはやはりmbstring.internal_encodingから指定しなければならないのでしょうか(現在は常にUTF-8でチェックしているようです)。

    • ベストアンサー
    • PHP
  • PHPの文字コードについてお願いします。

    Apache2、MYSQL、PHP5を使用して勉強しているものですが、文字コードについて質問させてください。 まず、参考書を読みながらphp.iniをこの用に設定しました。 output_handler =mb_output_handler default_charset = "Shift_Jis" extension_dir = "c:\php\ext\" extension=php_mbstring.dll extension=php_mysql.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; MySQLの文字コードはウィザードでUJISに設定して勉強しています。 Apache2の設定は本で支持が無かったのでとくに設定はしていません。 しかしこれでは文字化けが起こったりしてしまい、Googleなどで調べたらUTF-8で統一するのが良いと書かれていたのですが、どのように変更すればわからないです。私の購入した本では「mbstring.detect_order = auto」の意味などが書いて無くて、ただ丸写しの状態になってしまい設定方法が身についていません。なので今回の質問で、文字コードの設定を覚えておきたいのです。 1.UTF-8などの文字コードに変える場合は、Apache2の設定を変える必要があるのでしょうか。 2.上記したphp.iniの設定はどのような意味があるのでしょうか?SHIFT-JISでPHPを書くということでしょうか? できれば各自の良い設定方法を教えてください。 3.たとえばSHIF-JISで書いたPHPファイルを保存するときはSHIFT-JIS形式で保存するのでしょうか? 4.なぜphpはSHIFT-JISで書いているのにMySQLではUJISの文字コードを使用するのでしょうか。統一した方がいいのでは? 5.utf-8に文字コードを変える場合は、php.iniのどの部分を設定し直せばいいのでしょうか? 一つでも回答して頂けるととても嬉しいです。よろしくお願いいたします。

    • ベストアンサー
    • 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
  • MySQL文字化け対応

     こんにちは。 1つ教えて頂けないでしょうか。 XAMPP1.8.2をダウンロードしてphpMyAdminを使用し1つテーブルを作成しました。 列のデータ型は4列全てvarchar(255)です。そこにCSVのUTF-8+CRLFで保存したデータを インポートすると日本語の項目列(4列目)が文字化けしてしまいます。また1行目の1列目の 項目に不要な文字化けした文字が付いてしまっています。 php.iniの変更 mbstring.internal_encoding = UTF-8 mbstring.http_output = UTF-8 mbstring.encoding_translation = On mysql\binのmy.iniの変更 init-connect=\'SET NAMES utf8\' collation_server=utf8_unicode_ci character_set_server=utf8 テーブルの照合順序をutf8_general_ciに変更 以上の変更を行っても文字化けしてしまいます。 まだ他に変更しなければならないところがあるのでしょうか? 分かる方おられましたら、教えて頂けないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL