• ベストアンサー

iisでsjisとEUC-JPを同時に動かすためのmbstring?

windows2000pro+iisでsjisとEUC-JPの二つの文字コードで書いた HTMLを同時に動かすためのmbstringの設定をご存知の方 教えてください。今はその都度php.iniを書き換えています。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

説明足らずですみません。 PHPでヘッダーを付加するのです。 EUCの文書には <?PHP header('Content-Type: text/html;charset=EUC-JP'); print "HTML文書"; ?> SHIFTJISの文書には <?PHP header('Content-Type: text/html;charset=SHIFT-JIS'); print "HTML文書"; ?> とすればどうでしょう?

SoHeart
質問者

お礼

回答ありがとうございます。 試してみましたが変化なしです。 iisだからだめなんでしょうか?ひょっとしたらアパッチだと 出来たりするんでしょうか? もし、そうだったら変えてもいいって思ってます。

SoHeart
質問者

補足

過去ログとか見ても回答が無いのでこの質問は〆ようと思います。 どうもありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPに関してであれば、ヘッダを付け加えるだけで 場合ワケができそうですけど、そういうことではない?

SoHeart
質問者

補足

metaの行で文字コードをeuc-jpとかshift_jisとか 指定してるんですがieもfirefoxも無視してしまいます><

関連するQ&A

  • MySQL+PHPサイトでSJISからEUCに変換したい

    いつもお世話になっております。 現在PHP4.3.9+MySQL4.1.2でSJISコードで運営をしておりますが、サイトの文字コードをEUCに変更しようかと検討しております。それで、現在いろいろとEUCコードでMySQLから引っ張ってきたデータの表示及びMySQLへのデータ登録の実験をしております。 まずは、PHPファイルをEUCに変換し、php.ini内のSJISだった箇所を下記のようにEUC-JPに変換しました。 mbstring.internal_encoding = EUC-JP mbstring.http_output = EUC-JP そして、PHPファイル内でMySQLへ接続後文字コードを指定している箇所を $sql="SET NAMES ujis"; mysql_query($sql); と変更しました。 実際のPHPファイルとphp.iniに関する部分のみEUCコードに変更し、sjisで設定しているMySQLの設定ファイルとテーブル内は何も変更していない状態です。この状態でフォームに入力した内容をMySQLのテーブルに追加し、追加した情報をPHPで表示する実験をしましたが特に文字化け等の問題は無く動作しました。また既にMySQLに登録してあるデータをEUCの環境で表示させましたが、問題なく表示されました。 前置きが長くなりましたが、MySQLの設定を特に変更しなくても今回私が行なった方法でSJISからEUCへの変換をしてしまって問題は無いでしょうか?PHPのファイル数やMySQLのテーブル数が多いので、いきなり実験通りに動くか不安があるので、質問させていただきました。 PHPやMySQLの文字コードの初歩的なことが分かっていないもので、変な質問になってしまいましたが、アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP
  • phpがsjisファイルを勝手にeuc-jpに

    変更してブラウザに表示してしまうのですが どうしたらこのような変換をやめさせることができるでしょうか? phpinfo()を見てみると  PHP Core ・・・・・・・・・・・・ default_charset EUC-JP(local value) EUC-JP(master value) ・・・・・・・・・・・・  mbstring ・・・・・・・・・・・・ mbstring.http_output EUC-JP(local value) EUC-JP(master value) mbstring.internal_encoding EUC-JP(local value) EUC-JP(master value) ・・・・・・・・・・・・ となっています。 このEUC-JPをsjisに変更したらいいのでしょうか? そうだとするとその方法を教えてください。

    • ベストアンサー
    • PHP
  • mbstring.http_output = UTF-8 としているのにSJISで出力されているようである

    php.iniでmbstring.http_output = UTF-8 としました。 テキストエディタで <HTML> <BODY> <?PHP echo "教えて"; ?> </BODY> </HTML> というファイルをつくり、sjisで保存し、test.phpと名づけました。 このファイルをブラウザで表示させる際、エンコードをUTF-8とすると文字化けしてしまいます。 SJISだとちゃんと表示できます。 mbstring.http_output = UTF-8としている以上UTF-8に変換されるわけではないのでしょうか?

    • ベストアンサー
    • PHP
  • IIS5.1です。PHPをブラウザで開くと文字コードがSJISになる。

    IIS5.1です。PHPをブラウザで開くと文字コードがSJISになる。 WindowsXPのIISをWEBサーバとして利用しております。 http://localhost/test.phpを開いた際、必ず文字コードがSJISとなります。 そのページのメタタグには間違いなくキャラクタセットをEUCにする指定がされています。 そこでブラウザの機能で、エンコードをEUCに変更すると正常に表示されますが、 ページ移動するとまたSJISとなり、同じくエンコードを変更しなければなりません。 IISの設定かとは思うのですが、解決方法が見つかりません。 お教えいただけると助かります。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+MySQLでSJISからEUCへの文字コード変換方法を教えてください。

    こんにちは。いつもお世話になっております。本来であれば自サーバーで検証してから質問すべきだとは思いますが、現在稼動中のサーバーしかなく、止めることができないので質問させていただきます。 現在、PHP+MySQLでサイトをSJISコードで運営しておりますが、「表」「能」等のSJISの文字化け対策が面倒になってきまして、EUCに変換してしまおうかと検討しております。 現状の日本語に関する設定は下記のようになっております。 ▼MySQL(my.cnf) バージョン:4.1.20 [mysqld] default-character-set=sjis init_connect="SET NAMES sjis" [mysql.server] default-character-set=sjis [mysqldump] default-character-set=sjis [mysql] default-character-set=sjis ▼PHP(php.ini) バージョン:4.3.9 mbstring.internal_encoding = SJIS mbstring.http_input = pass mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto PHP内でMySQLと接続した直後に次のようにSJISを指定しています。 $sql="SET NAMES sjis"; mysql_query($sql); ちなみに、MySQLはMySQLadminで管理しておりますが、テーブルの照合順序は全てsjis_japanese_ciになっています。 上記のような内容ですが、この場合SJISからEUCに変換する場合の手順として、下記の流れでよろしいでしょうか? 1.PHPファイルをEUCコードに変換。 2.php.iniのSJISの部分をEUCに変換。 3.MySQLの設定ファイルのsjisの部分をujisに変換。 4.MySQLのテーブル内のデータを全てエクスポートして、外部エディタでEUCに変換後インポートする。 特に上記4の作業はテーブル数及びデータが膨大なため結構な作業になってしまいそうです。 もしもっと楽な方法があればご教授いただければ幸いです。なお、サーバーはRed Hat Enterprise Linuxです。

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

    Fedora10の環境にyumでPHPをインストールし、 php.iniのmbstringを下記のように設定しています。 ところが、mbstringの実行ができません。 phpinfo()を実行してもmbstringの項目が表示されません。 どなたか、ご教示いただければ幸いです。 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS bstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 ;mbstring.strict_encoding = Off

    • ベストアンサー
    • PHP
  • 文字化けの原因を教えてください。

    WindowsでスクリプトをEUCで保存し、シフトJISでブラウザへ出力ときの 設定として以下のようにphp.iniを設定しています。 ~php.ini~ output_buffering = On output_handler = mb_output_handler magic_quotes_gpc = Off default_charset = Shift_JIS extension_dir = C:/php/ext 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 = none ~php.ini~ mb_detect_encodingでDBから取得した値の文字コードは、SJISでした。 mb_convert_encoding($dbdata,"EUC-JP","SJIS")で正しく表示されます。 iniファイルの設定のみで正しく表示するにはどのように設定するのがいいのでしょうか?それとも、このような文字コード変換は必須なのでしょうか? よろしくお願いします。 [PHP使用環境] PHP=5.1.6 OS=Windows2000 PRO webserver=apatch2.0 [DB環境(リモートサーバ)] DB=MS SQL Server2000 OS=Windows2003 server R2

    • 締切済み
    • PHP
  • 日本語が使いたいのですが[mbstring]設定がわかりません

    環境は winxp sp2 apache 2.0.54 php 5.0.4 argosoftmailserver php.iniの設定は [mbstring] 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 です。足らない事があればお願いします。 下はphpの文です。 <?php $subject = "テスト"; $message = "あいうえお"; $test="日本語エンコーディングテスト"; print "$test (" . mb_detect_encoding($test) . ")<br>"; print ("mbstring.http_input=". mb_http_input() ."<br>"); print ("mbstring.http_output=". mb_http_output() ."<br>"); print ("mbstring.internal_encoding= ".mb_internal_encoding()."<br>"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $message = mb_convert_encoding($message , "SJIS", "EUC-JP"); mb_language("Japanese"); $chk = mb_send_mail('******@*******',$subject,$message,'From:***@******.dyndns.org'); if($chk==FALSE) { print "送信失敗"; } else { print "送信完了"; } ?> エンコードテストの結果は以下です。 日本語エンコーディングテスト (SJIS) mbstring.http_input= mbstring.http_output=SJIS mbstring.internal_encoding= EUC-JP よろしくお願いします。

    • ベストアンサー
    • PHP
  • SJIS→EUCに送っても文字化けしない

    htmlは、SJISで作っています。 PHPは、EUCで作っています。 普通は文字化けをするため、mb_convert_encoding関数を用いますが、 なぜか、この関数を使わなくても、文字化けしません。 友人は、有り得ないと言います。 事実、友人PCではmb_convert_encoding関数で文字化けを直してました。 私も友人に同感で、SJIS→SJISやEUC→EUCなら文字化けしないけど、文字コードが違うのです。違うから、mb_convert_encoding関数を使うと、思っているのですが‥‥ 設定が違うのかと思い、友人の、php.iniなどいくつかのファイルを私のPCに上書きしてもらいましたが、変わりませんでした。 こういうことってあるのでしょうか? 文字化けしないなら、mb_convert_encoding関数を使わなくて良いので、楽だと思いましたが・・・ 何かの不具合なら、いざ完成した時、またmb_convert_encoding関数をいれる手間がありますし、どうしようか迷っています。 本には、「文字化けしない場合もある」という記述は一言も書いてありませんでした。 逆に、「文字化けするからmb_convert_encoding関数を用いる」と大きく書いてあるぐらいです。 何かの設定なのでしょうか? ソフトのバージョンも、同じでした。不思議です。

    • ベストアンサー
    • PHP

専門家に質問してみよう