• ベストアンサー

同じサーバー内で異なる文字コードで作成したスクリプトの実行について

お世話になります。 LinuxでPHP4を使い、文字コード「EUC版」のwikiを利用していました。 今度、CMSのインストールを検討しているのですが、使いたいCMSでは UTF-8版しかありません。 同じサーバーの中で、複数の文字コードのPHPのスクリプトを実行する ことは出来るのでしょうか? php.iniの設定が必要な場合は、どの用に設定したらよいのでしょうか? 今は、php.iniの中で、mbstring.internal_encoding = EUC-JPと設定しています。

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

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

  • ベストアンサー
回答No.1

mbstring系の設定にあるinternal_encodingやinput、outputなどの自動判別を行う部分を無効にしてしまえば出来るんじゃないかと思います。 が、スクリプト側できちんと把握して変換してあげないと文字化けしやすいと思います。

maboten
質問者

お礼

ありがとうございます。 いろいろと設定出来るのですね。 CMS等のアプリケーションなどで、インストール時にPHPの設定をチェックしているのもあり気になっていました。 もう少し、時間をかけてPHPのについて調べながら進めてみます。

関連するQ&A

  • PHPの内部処理コードについて。

    PHPの内部処理コードについて。 UTF-8設定のCenOS5.4上で動作するphp5.3.1のシステムがあるのですが、 php.iniでは、 ;mbstring.internal_encoding = EUC-JP となっており、内部処理コードは注釈となっています。 mbstring.internal_encodingのデフォルトは何コードなのでしょうか。

    • ベストアンサー
    • PHP
  • php.iniを変更したのにUFT-8が文字化け

    こんにちは。教えて下さい。 Movable TypeをUTF-8で運営しようと思いましたが、使用中のサーバーのphpの文字コードがEUC-JPでした。 サーバーに問い合わせたところ、php.iniを編集するだけで文字コード変更できます、とのこと。 そこで、php.iniの mbstring.language = Japanese mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = EUC-JP mbstring.internal_encoding = EUC-JP mbstring.detect_order = auto mbstring.substitute_character = none; を mbstring.language = neutral mbstring.encoding_translation = On mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.internal_encoding = UTF-8 mbstring.detect_order = auto mbstring.substitute_character = none; にしてみました。 当方初心者で、php.iniは初めていじりました。 EUC-JPとあった箇所またはJapaneseとあった箇所を変更したのみです。 また、Movable Typeのmt-config.cgiで 文字コードをEUC-JPからUTF-8に変更。 Movable Typeの文字コード関連の変更はこのファイルのみですのでこれで大丈夫・・・。 そう思ったのですが、Movable Typeが文字化け・・・。 php.iniの設定が間違っているのでしょうか? 助けてください。 よろしくお願いします。

    • ベストアンサー
    • 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
  • UTF-8で文字化け

    いつもお世話になっております。 全てのファイルをEUC-JP で作成しております。 Googleマップを使用することになり、1ページだけ UTF-8 で出力したいと思います。 php.ini の設定は以下のようになっております。 -------------------------------------------------- default_charset EUC-JP mbstring.detect_order no value mbstring.encoding_translation Off mbstring.func_overload 0 mbstring.http_input pass mbstring.http_output EUC-JP mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.substitute_character no value -------------------------------------------------- Googleマップを出力するページで以下のようにしたのですが 文字化けが直りません。 map.php -------------------------------------------------- ini_set("default_charset", "UTF-8"); mb_internal_encoding("UTF-8"); 他に設定する箇所はありますでしょうか。 よろしくご教示お願いいたします。 <環境> PHP:4.3.1

    • ベストアンサー
    • PHP
  • サーバーにアップすると文字化けする

    PHPで作成したWebサイトをブロバイダーのサーバーにアップして表示すると文字化けします。 ローカル環境では、php.iniの設定で、エンコードをUTF-8としていますが、「サーバー環境はWindowsサーバをベースとしており、WEBサーバはIIS(7.0)となるため、各サイトごとにphp.iniファイルを設定することはできない。 (サーバ内にアップロードされてもPHPから読ませることはできません。)」 とブロバイダに言われました。 どうしたらよいのでしょうか? ちなみに、ローカル側のエンコードをjisにすれば問題ないのかもしれませんが、いまいちphp.iniの設定に自身がないのです。 今の状態は以下の通りですが、どこをどう変更すればよいのでしょうか? よろしくお願いします。 **************************************************** default_charset = "UTF-8"       出力文字コード mbstring.internal_encoding = UTF-8  PHP内部の文字コード mbstring.http_input = auto       HTTP入力の文字コード mbstring.http_output = pass      HTTP出力の文字コード mbstring.encoding_translation = Off  HTTP入力の文字コードの自動変換 ****************************************************

    • ベストアンサー
    • PHP
  • 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.ini 繰り返してるのはなぜですか⇒mbstring.internal~= UTF-8mbstring.internal~ =UTF-8;

    php.iniで mbstring.internal_encoding = UTF-8mbstring.internal_encoding = UTF-8; ↑2回続けて同じことを書いているこのプログラムはどういう意味なのでしょうか? ※設定サイトを見ながら EUCの部分をUTF-8に書き換えたのですが2か所ではなく後ろの部分だけの書き換えでよかったのかどうか疑問です。 解答宜しくお願いします。

    • 締切済み
    • PHP
  • PHP 文字コードについて

    以下のような環境のホスティングサーバでSmartyを使い簡単なアプリを作っています。 サーバ PHP Version 4.3.7 phpinfoの値 mbstring.detect_order auto mbstring.encoding_translation On mbstring.func_overload 0 mbstring.http_input auto mbstring.http_output SJIS mbstring.internal_encoding EUC-JP mbstring.language Japanese mbstring.script_encoding auto mbstring.substitute_character no value 今回、PHPソースはUTF-8、HTML(Smartyテンプレ)もUTF-8で作っています(作りたいです)。 この様な場合、PHPスクリプトに「ini_set」を記述するのが良いのか、又は$_POST等で受け取ったときに毎回「mb_convert_encoding」記述するのが良いのか、その両方か、アドバイスを頂きたいです。 よろしくお願いいたします。

    • ベストアンサー
    • 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

専門家に質問してみよう