• ベストアンサー

phpのソースによって、文字化けしてしまいます

お世話になっております。 PHPとMySQLを利用しております。php.iniでPHP 、my.cnfでMySQL、それぞれの文字コードを「日本語EUC」に設定し、問題なく動作しております。 ただ、PHPスクリプトのソースコードが日本語EUCでない場合、出力結果が???????のように文字化けしてしまいます。 PHPスクリプトのソースの文字コードが、日本語EUCであっても、シフトJISであっても文字化けしないようにするには、どのように設定したらよいでしょうか。 初心者であり、困っております。 どなたか、お助けいただくことはできますでしょうか。 どうか、よろしくお願いいたします。

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

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.2

> もしかしたら解決するための方法があるかもしれません。 こういう風に書いておいてなんなのですが、 やはり、スクリプトの文字コードは、 シフトJISよりもできればEUC-JPで統一しておく方が よいと思います。 あるスクリプトはシフトJISで、別のスクリプトはEUC-JPという状態ですと、 何かと都合のよくないところがありそうです。

kisoyasa
質問者

お礼

ご回答ありがとうございます。 私も5C問題やセキュリティのことがあるので、 EUCにしたいのですが、実はXAMPPを使っておりまして、 上のような設定ですと、XAMPPの初期画面が 文字化けしてしまいます。 シフトJISのときは問題がなかったので、 ソースコードの問題なのかと思いまして、 なんとか両方に対応できないか、と思いました。 お世話になります。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

ブラウザへの出力結果が文字化けするのでしょうか? 本当は、スクリプトの文字コードは統一する(シフトJIS以外で)のが望ましいと思うのですが、 もしかしたら解決するための方法があるかもしれません。 そこで、php.iniでの、「mbstring何とか」の設定内容を すべて提示していただけますか?

kisoyasa
質問者

お礼

さっそくご回答いただき、とても感激しています。ありがとうございます。 今までシフトJISで統一していたのですが、シフトJISには問題があるようなので、EUCに統一しようと思いました。しかし、今まではメモ帳で作成していたため、すべてのスクリプトがシフトJISで作られてしまったのだと思います。EUCに変換後、実行すると問題ないようなのですが、なんとか両方に対応できないものでしょうか。初期のphp.iniから変更したのは、次の8点です。初心者なもので、考え方に根本的な問題があるのかもしれませんが、何卒、よろしくお願いいたします。 (1)「;output_handler=」の行を次のように修正する。 ↓ output_handler=mb_output_handler (2)「;default_charset="iso-8859-1"」の記述を修正する。 ↓ default_charset="EUC-JP" (3)「;mbstring.language=Japanese」の行の;を取る。 ↓ mbstring.language=Japanese (4)「;mbstring.internal_encoding=EUC-JP」の行の;を取る。 ↓ mbstring.internal_encoding=EUC-JP (5)「;mbstring.http_input = auto」の行の;を取る。 ↓ mbstring.http_input = auto (6)「;mbstring.http_output = SJIS」の行の;を取る。 ↓ mbstring.http_output = EUC-JP (7)「;mbstring.encoding_translation=Off」の行を次のように修正する。 ↓ mbstring.encoding_translation=On (8)「;mbstring.detect_order=auto」の行の行の;を取る。 ↓ mbstring.detect_order=auto

kisoyasa
質問者

補足

kisoyasaです。書き忘れてしまいましたが、文字化けは日本語でブラウザに出力するときだけです。たとえばprint "日本語";などのときだけだと思います。 申し訳ありません。どうか、よろしくお願いいたします。

関連するQ&A

  • PHP+MYSQLでの文字コードによる文字化け

    お世話になっております。 PHP+MYSQLの構成でDBに登録、DBから参照→表示といったアプリケーションを作っているのですが質問があります。 文字コードを意識せずに、”Shift-JIS”でPHPやhtmlのコードを書いていたのですが、仕様上問題があることに気づいたので今まで書いたソースの文字コードを”EUC-JP”に変更することになりました。 フリーで複数のテキストファイルをShift-JIS→EUCに一括変換するソフトがあるので、そのソフトを使ってEUCの文字コードに変換したところ、ソース中の日本語(全角)が文字化けしてしまいました。 #どの変換ソフトを使っても同様の結果になります ブラウザー上で表示すると問題ありませんが、今後ソースをいじるときに非常に不便です。目的としては、「ソースの文字コードをShift-JISに変換」かつ「ソース内の日本語(全角)の文字化けを起こさない」方法をご存知の方は是非ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • Yahooのソースを文字化けせずに見る方法

    YahooのソースをIE5.5からみたら日本語で表示されてる部分が文字化けしていました。 ほかの日本語EUCでできてるサイトを見たらすべて文字化けしていました。違う方法で文字化けせずに見ることはできるのでしょうか?文字化けした部分を普通に直すソフトとかはあるのでしょうか? それとホームページごとにどうしてEUCとかシフトJISとかJISといった違いがあるのでしょうか?

  • 文字化けについて

    PHP5 MySQL5 phpMyAdmin の3種でシステム構築を行っていました。 この度新しいPCで環境を設定した所、文字化けが起きてしまいました。 構築した以前のローカル環境と各バージョンや設定は同じはずなのですが、文字化けに悩まされています。 具体的には、MySQLはEUCでPHPはShift_JISにて構築しています。 システムの構造は、Shift_JISをMySQLに挿入する際はEUCに変換して格納しています。 文字化けは、phpMyAdminでは正常にみれるものがシステムをブラウザから確認すると日本語が全て???に文字化けしてしまっています。 そこで、phpMyAdminからDBの文字コードをlatin1にした所、今度はphpMyAdmin上で文字化けし、ブラウザ上からは正常にみえるといった状態です。 数日格闘しているのですがお手上げ状態です。 どなたかアドバイス頂ければ幸いです。

    • 締切済み
    • PHP
  • mysql-phpでの文字化け

    自分のパソコンでは文字化けせず、正しく表示されているのですが、 niftyのデータサービスを使ってphpで表示すると文字化けします。 my.iniとmy.cnfの問題と思いniftyサーバーにftpで接続し探したがファイルが見つかりません。 mysqlとphpはutf8で設定しています。 niftyサーバーのmysqlは5、phpMyAdminは2,11,9です。

    • ベストアンサー
    • MySQL
  • MySQLの文字化けについて

    MySQL側をUTF-8 PHPスクリプトをShift-JIS にしたい場合はどのような設定にすれば文字化けせず表示されますか? 設定例をのせていただけると助かりますm(_ _)m

  • 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プログラム内でHTML作成時の文字コード

    お世話になります。 PHPコード・及び内部エンコーディングはEUC-JPでプログラムを作成しています。 プログラムでHTMLファイルを作成する処理があるのですが、どうしてもEUC-JPで作成されてしまいます。 中身(<html>~)はmbstringできちんとShift_JISに変換して出力するのですが、ファイル自体の文字コードがEUC-JPで保存されているようで、ブラウザで表示するとエンコードがEUC-JPになって表示され、文字化けしております。 ブラウザのエンコードをShift_JISに直せば文字化けしないで表示されるのですが…。 プログラムから作成したファイルをShift_JISで作成する方法をご教授いただけましたら幸いです。 php.iniの設定をいじる権限はありません。また、プログラムをShift_JISにする以外で方法をお教えいただけないでしょうか。

    • ベストアンサー
    • PHP
  • WEBページは読めるが、ソース表示で文字化けするのは?

    WindowsXPと2000の2台で使ってIE6以上で WEBサイトを見ています。    知人のサイトをホームページビルダーを使って更新しなければならず ソースを見ると <META http-equiv="content-type" content="text/html; charset=EUC-JP"> となっていたので、そのままにして更新してUPしています。   IEでは表示のエンコードは日本語(EUC)でちゃんと読めます。   表示のソースを見ると文字化けしています。 ここが気になっています。 他の人はちゃんとサイトが見れているのだろうかと?   シフトJISのサイトはソースが文字化けしていません。 多くのサイトがシフトJISだと聞きます。 そこでのEUCのサイトをシフトJISにするには どうすればいいでyそうか?   NETA の記述を変えるのでしょうか? それとも別の方法があるのでしょうか? できないのでしょうか?

  • PHPの文字コード (php.iniの設定)

    php.iniを以下のように設定した場合について教えてください。 (PHPの参考書に載っていたWindows環境での設定例です) output_buffering = On output_handler = mb_output_handler default_charset = Shift_JIS extension=php_mbstring.dll mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = auto mbstring.script_encoding = EUC-JP 1. この設定は「PHPの記述されたファイルはEUC-JPで、 ブラウザに表示される時点でShift-JISに変換される」 ということですか? 2. PHPの参考書(PHP5対応)に、 「PHPアプリケーションを構築する場合、文字コードを Shift-JISにすると、PHPのバージョンやphp.iniの設定に よっては文字化けの原因になることがあるので、 Windows環境でもEUC-JPで保存することを強くお勧めする」 というようなことが書かれていました。 素人考えで、すべて同じ文字コード(EUC-JP)のほうが 楽なのではないかと思ったのですが、上記のように 設定するのはどういう理由からでしょうか? 3. CSSファイルやテンプレートファイル(Smarty)の 文字コードは、Shift-JISとEUC-JPのどちらで保存 すればいいのですか? 4. metaタグのcharsetはShift-JISであっていますか?

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

    PHP4.3.2 Windows2000 PostgreSQL RedHat Linux DBから取得した値をCSVファイルに書き出します。 この時に日本語が文字化けをしてしまうのです。 php.iniの設定を変えれば、良いのでしょうか? 初歩的な質問で申し訳ありませんが、 よろしくお願いします。 php.iniの設定内容 default_charset = "SJIS" mbstring.language = Japanese mbstring.internal_encoding = eucJP-win mbstring.http_input = ASCII,JIS,Windows-31J,UTF-8,EUC-JP mbstring.http_output = Windows-31J mbstring.detect_order = ASCII,JIS,Windows-31J,UTF-8,EUC-JP mbstring.substitute_character = none DBの設定内容 List of databases Name | Owner | Encoding -----------+----------+---------- test | postgres | EUC_JP

    • ベストアンサー
    • PHP

専門家に質問してみよう