IIS5.1でPHPをブラウザで開くと文字コードがSJISになる問題の解決方法

このQ&Aのポイント
  • IIS5.1でPHPをブラウザで開くと文字コードがSJISになる問題の解決方法をご教示ください。
  • WindowsXPのIISをWEBサーバとして利用しており、http://localhost/test.phpを開くと必ず文字コードがSJISになります。
  • メタタグにはキャラクタセットをEUCにする指定がされているにも関わらず、ブラウザのエンコードをEUCに変更しなければならず、ページ移動すると再度SJISになります。
回答を見る
  • ベストアンサー

IIS5.1です。PHPをブラウザで開くと文字コードがSJISになる。

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

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

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

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

PHP.iniの設定はどうですかね。 default_charset = Shift_JIS もしくはPHPソースに ini_set()で定義 にしてみるとか

その他の回答 (1)

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

phpファイルにhtmlが書かれている場合、根本的にそのファイル自体の文字コードがEUCになっていない、ということはありませんか? htmlのヘッダ情報として明示的にEUCをキャラセットしているなら、EUCとなるはずですが・・。 phpEditorなどであれば、再保存の際にSJISからEUCに変更したりできますが、お使いのエディタ次第では名前を付けて保存の際でしか文字コードを指定できないのでご注意を。

関連するQ&A

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

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

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

    現在、表示はPHPで文字コードはEUCで表示しています。 そのときには表示できるのですが、 表示したものを、SHIFT-JISにエンコードしてエクセルに表示するときに、文字コードの違いにより表示されないものがあります。 エンコードは $str = mb_convert_encoding($str, "SJIS", "auto"); と行っています。 EUCからSJISに変換するときに、何か特別なことを行う必要があるのでしょうか??

    • ベストアンサー
    • PHP
  • apacheでPHPの文字コードの認識について。

    とんちんかんな事を聞いているのかもしれません。 人様の質問に回答した際、分からなくなったのですが・・・。 Apacheってどうやって、PHPの文字コードを判断しているのでしょうか? いろいろな文字コードがあると思いますが、PHPなら、まぁ、SJISとEUCでしょう。 そもそも文字コードは、コードを考えた人が、ここの位置にはこの文字を、っていうお約束ですよね。 とうぜん、コードによって違うので、コードを間違えると文字化けが起こります。 これはブラウザーでも、テキストエディターでも、文字化けが起こります。 ここまでは、知っている知識です。 oeditというエディタは、私が使った中で文字コードの間違いが少ないですが、書かれている内容が短いとコードの自動認識が、うまく働かず、コードを間違えて読むこともあります。(体験 ということは、画像のようにこれはJpegとかGifとか、テキストの見えない部分に書かれてないと言うことでしょうか?(推測 もしそうなら、ApacheはどうやってEUCか、SJISか、他のコードかを区別しているのでしょうか? ローマ字は平気だけど、日本語は文字化けますよね。 たとえば、EUCで書かれているけど、Apacheでご認識してしまって、スクリプトは問題ないのに、エラーが起きることがあるのでしょうか? そもそもApacheはどうやって、文字コードを認識しているのでしょうか?

  • 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
  • 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の文字コード変換について

    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
  • ブラウザが文字コードを誤判別する

    PHPでフォームを含むHTMLを出力しています。 POSTを使ってページ移動すると、ブラウザが文字コードを誤判別します。 表示が文字化するのではなく、ブラウザのエンコードが誤判別され、POSTで次ページに移動するとPOSTされる文字列だけが文字化けします。 リンクによる移動では、誤判別しません。 php.iniの設定 default_charset = Shift_JIS mbstring.internal_encoding = EUC-JP mbstring.http_output = Shift_JIS PHPのソースは、EUC-JPで書いています。 出力するHTMLには、 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/> をヘッダーに記述しています。 この現象は100%発生するわけではなく、完全にランダムです。 確実な再現手順はありません。 ブラウザは、WinXP Pro SP2 + IE6.0 です。 ブラウザの不具合でしょうか?

    • ベストアンサー
    • HTML
  • SJIS文字コードについて

    文字コードSJISでHTMLを書いた時は、 海外のブラウザで見ることができますか? サーバ側の問題もありますか?

    • ベストアンサー
    • HTML
  • 文字コード(EUC->SJIS)についての質問です

    どこに質問して良いのか判断しかねましたので、 今回の開発環境であるVBのカテゴリで質問させていただきます。 さて早速質問ですが、EUC->SJISについてです。 現在あるフリーの.DLLを使ってコード変換をしているのですが、 ある特定の場合に限り、自分の期待通りの結果を返してくれません。 例えば以下のような場合(説明のためアレンジして抜粋)です。 ------------------------------------------------------------------ Dim Euc(6) As Byte Dim Sjis() As Byte Dim szSjis As Integer 'Sjis()のサイズ Euc(0) = 13 Euc(1) = 10 Euc(2) = 13 Euc(3) = 0 Euc(4) = 46 Euc(5) = 0 szSjis = Euc2Sjis(Euc(), Sjis()) '今回使用しているDLL内の関数 ------------------------------------------------------------------ この結果、変換後の値は以下のようになります。 szSjis → 3 Sjis(0) → 13 Sjis(1) → 10 Sjis(2) → 13 このようになり後半が無視されてしまっているような気がするのです。 私が期待している結果としては、46(&H2E)の"."が残ってほしいのですが…。 Euc(4)=0やEuc(6)=0がなにか悪さをしているのでしょうか? 日本語文字コードの知識に乏しいので、的外れな質問かもしれませんが、 このような分野にお詳しい方がいらっしゃいましたら、 どうかアドバイスよろしくお願いします。

  • IIS + PHP

    OS:WindowsXP IIS上にphpを導入しようとしています。 下記ページに書いてある通りに設定したのですが、エラーが出ます。 http://www1.mahoroba.ne.jp/~mitt/itmemo/php/04.htm エラーは、http://localhost/phpinfo.phpにアクセスしようとすると、 このページを表示する権限がありません。 HTTP 401.3 - リソース上の ACL によってアクセスを拒否されました。 というものです。 何をどこからチェックしたものかも分からず、困っています。 どなたかアドバイスお願いします!

    • 締切済み
    • PHP

専門家に質問してみよう