• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php.iniのmbstring.internal_encodingの値)

php.iniのmbstring.internal_encodingの値とは?

このQ&Aのポイント
  • php.iniのmbstring.internal_encodingの値について調べました。
  • 環境によって異なる文字コードの要件に対応するために、php.iniのmbstring.internal_encodingの値を調整する必要があります。
  • 異なるソフトウェアの動作に相反する値を設定してしまうと、文字化けの問題が発生する可能性があるため、注意が必要です。

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

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

自分も以前同じ事を経験しました。 ソフトウェアの仕様によっては影響があるみたいでした。 なので、グローバル設定としてphp.iniには一番よく使いそうなパターン(internal_encoding=UTF-8)を設定しておいて、必要に応じてローカル設定としてソフトウェアの各ディレクトリ内で.htaccessにて違う文字コードを指定(EUC,SJIS)する方法で解決しています。 (参考URLに当時参照したページを書いておきました。)

参考URL:
http://ns1.php.gr.jp/pipermail/php-users/2001-November/003373.html
suyasuyasuya
質問者

お礼

ありがとうございます。 マニュアルにのってたんですね。 http://www.php.net/manual/ja/configuration.changes.php なぞが解けました。一通り読んでおかないとまずいですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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.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のini_setの使い方

    宜しくお願いします。 携帯サイトをphpで作ってるんですが、特定の条件になると文字化けします。携帯の日本語コードは『shift_jis』だと思うんですが、サーバのpnpinfoをみてみると、 mbstring.detect_order auto auto mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.substitute_character no value no value となっていて、もしかしたら、 『mbstring.internal_encoding EUC-JP EUC-JP』 が原因かなーなんて漠然と思っています。 サーバのサポートを見てみると、 『mbstring.http_outputをあらかじめSJISに設定しておりますが、標準では、出力には変換ハンドラを経由しないように設定にしておりますので、基本的に日本語は、PHP4を記述したコードおよびPHP4 内での内部扱いコードに設定してあるEUCのまま出力されます。変換ハンドラを経由しないのは、互換性などの事由におきますものです。ユーザが PHP4に、出力時に自動的に出力をシフトJISにしたい場合には、コード内で変換ハンドラを利用するようにコーディングする必要があります。』 となっておりました。php初心者の私には読んでも何がなんだかさっぱりわからず、悩んでおります。 自分なりの解釈として、 『ini_set関数を使ってサーバのphpの設定を変更してあげれば、文字化けは解消する』のでは?と思い、webでini_set関数の使い方を検索してみましたが、行き着く先はphpのサイトになってしまい、見ても使い方自体はよく分かりませんでした。 大変悩んでおります!どなたか助けてください!! 宜しくお願いします。

    • ベストアンサー
    • PHP
  • mbstringについて

    PHPを勉強しようと xamppを入れています。 phpのソースは、UTF8で記述しており、 default_charset = "utf-8"でiniに設定しています。 <?php echo "ハローワールド"; ?> とソースを作った場合、 質問1:「mbstringの設定がないと「ハローワールド」は文字化けするもの」なのでしょうか? mbstringは、「mbstring関数を利用するときに影響がある」と認識しております。 影響のあるmbstring関数?:http://php.net/manual/ja/ref.mbstring.php    極端の言い方をさせていただくと、上記ソースでは、mbstringの設定有無の影響は ないのでしょうか? 質問2:上のソースをSJISで書いたときに、default_charset = "utf-8"の設定が php.iniでされていますので文字化けが発生するという解釈で問題ないでしょうか ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • php.ini の mbstring.encoding_translation が反映されない

    さくらインターネットで独自にPHP5を導入しました。 マルチバイトの処理"mb_convert_encoding"を実行したところ、文字化けしたままの状態です。 ■phpinfo()で確認したところ、下記の通りとなっています。 ------------------------------------------------------------- Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. Directive Local Value Master Value mbstring.detect_order auto auto mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input auto auto mbstring.http_output SJIS SJIS mbstring.internal_encoding EUC-JP EUC-JP mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character no value no value -------------------------------------------------------------- ■php.iniの内容は下記の通りです。 -------------------------------------------------------------- output_handler = mb_output_handler mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translastion = On mbstring.detect_order = auto mbstring.substitute_character = none; -------------------------------------------------------------- ■PHP5をインストールするときの、conf.sh の内容は下記の通りです。 -------------------------------------------------------------- #!/bin/sh ./configure \ --prefix=$HOME \ --with-config-file-path=$HOME/www/cgi-bin \ --program-suffix=5 \ --with-pear=$HOME/share/pear5 \ --enable-force-cgi-redirect \ --enable-mbstring=all \ --enable-mbregex \ --enable-mbstr-enc-trans \ --enable-versioning \ --enable-trans-sid \ --with-mysql \ --with-openssl=/usr \ --with-soap=yes \ --with-zlib=/usr \ --with-gd=/usr/local \ --with-jpeg-dir=/usr \ --with-freetype-dir=/usr \ --with-ttf \ --with-png-dir=/usr \ --with-curl -------------------------------------------------------------- ■疑問点 php.ini で設定した、    mbstring.encoding_translastion = On が反映されていないことがphpinfo()を見ることでわかりました。 phpinfo()で表示される、Configuration File (php.ini) Path は 設定したphp.ini を指しているので、異なるphp.iniを参照しているわけではないと考えています。 ちなみに、php.ini で、上記のマルチバイト関連のオプション設定をしないときのphpinfo()の内容は下記の通りです。 Multibyte Support enabled Multibyte string engine libmbfl Multibyte (japanese) regex support enabled Multibyte regex (oniguruma) version 4.4.4 Multibyte regex (oniguruma) backtrack check On mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. Directive Local Value Master Value mbstring.detect_order no value no value mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input pass pass mbstring.http_output pass pass mbstring.internal_encoding ISO-8859-1 no value mbstring.language neutral neutral mbstring.strict_detection Off Off mbstring.substitute_character no value no value   なぜ、mbstring.encoding_translastion が反映されないのか、どこかで上書き設定されてしまうのか、他に設定すべきオプションがあるのか、教えていただけないでしょうか。

    • ベストアンサー
    • 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】mb_convert_encoding()で "~" 等が化ける

    PHP5.2.4 使用者です。(レンタルサーバー) 例えば、サーバー及び記述の文字コードがEUC-JPだとして、 $str = "~"; $str = mb_convert_encoding($str , 'UTF-8', 'EUC-JP'); とすると "?" に化けてしまいます。 調べたところ、マルチバイト文字の ~ ¬ ∥ - ¢ £ \ は対応するコードがないから化けるとか… "~" はよく使う文字ですし、そんな簡単に化けられては困るんですが… プロの方はこういうのどう処理してるのでしょう。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ajaxを使用した場合にPHP出力文字の文字化け

    サーバー側をPHPにしてajaxシステムを作ろうと思っています。 サーバからのデータ取得時にResponseTextを使用しており、ブラウザの表示での文字化けで困っています。 WinXP SP2 IE6.0では、UTF-8なら表示できますがEUC-JPは文字化けします。 しかし、Win2K IE5.0とWinX PSP1 IE6.0では、UTF-8は文字化けし、EUC-JPなら表示されます。 こっちを立てればあちらが立たずという状況で困っています。 また、直接XMLファイルやテキストファイルを作成し、これを読み込むと どのパソコンでも表示することができました。 phpから出力した文字がうまい具合に読めないのです。 ちなみにRespondeXMLを使用する場合、 XMLファイルを直接読み込むと内容を取得できるのですが、 PHPから出力したXMLデータを取得すると何も表示されません。 いい解決方法はないでしょうか。よろしくお願いいたします。 サーバシステム fedoraCore3 Apache 2.0 PHP 4.3.11 php.iniの文字コード設定はEUC-JP用にしています。

  • PHPでUTF-8からEUC-JPにエンコディングしたときに、一部の文

    PHPでUTF-8からEUC-JPにエンコディングしたときに、一部の文字が文字化けしてしまいます。(1)という文字です。データベースをEUCで作っていて、すでに色々なデータが入っているので、データベースをUTF-8とするわけにもいかないでの、なんとかEUCで保存しようとしているのですが・・・。 "テスト(1)"(UTF-8)をmb_convert_encodingでEUCにして、保存しますと、"テスト?"となっています。 テスト(1)をUTF-8の状態でブラウザで確認しますと、文字化けしないできちんと「テスト(1)」と表示されます。やはり、Mysqlに保存するときに文字化けしています。どなたか、似たような経験のある方がおりその原因がお分かりでしたら、教えてください。SJISにあるようなダメ文字というものなのでしょうか。確か「まぐまぐ」というメルマガの編集でも(1)という文字は使えませんでした。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP