http://syokunin.no-ip.org/sample/cart/view.php
↑こちらの買い物カートCGIを使用したいと思い
↓仮にアップしました。
http://www.hino-rc.org/webcart/view.php
私も他の人もエンコードを自動選択にしているのに
私のPC環境ですとどちらもきちんと表示されるのですが、
他の人の環境では、レンタル見本はきちんと表示されるのに
仮アップの方は文字化けしてしまうとの事です。
そこでお伺いしたいのが
1.上記の文字化け理由と対策
2.ご使用のOSとブラウザでの動作確認
OS・OSバージョン・ブラウザ・ブラウザバージョン・表示結果
の順にお答えください。
出来れば1.2.共お答え頂けると嬉しいですが、2.だけでも可。
特に上記と同じ不具合が出たケースを知りたいです。
NG
●前の回答がオープンされていないのに回答する(同じタイミングで
前後してしまうのは、避けられませんのでかまいません)
●既出のOS・ブラウザとかぶる(対策が記載されていればOK)
●「ありません」「レンタル先に問い合わせて」
まず動作確認ですが
WindowsXP + IE6, Windows2000 + FireFox1.0 で
確認しました。IE6で自動認識させればちゃんと
見えるのですが、表示→エンコード→日本語(自動選択)を
明示的に選択すると、シフトJISと認識され画面表示が消えました。
で、ソースを見ると、option 内の文字列だけシフトJISに
なっているようなのでそこをEUC-JPに直せばいいんじゃ
ないかと思います。settei.php にカテゴリ設定が
あるようですが、そのファイルがシフトJISに
なっていないかどうか確認してみてはどうでしょう。
1.については申し訳ありません。phpは分野外なので。
2.winXP Pro IE6.0 どちらも正しく表示されました。
2.winXP Pro Netscape 7.1 では
一部タグがエラーになります。
<a href=¥”
Yahoo! JAPAN
¥”>Yahoo!</A>
上記のようなものが出力されます。
ご回答有難うございます。
新たな謎が!
こちらの謎も判る方、お答え頂けますでしょうか?
私もphp判りません…(爆)
http://httpd.apache.org/docs-2.0/mod/quickreference.html
Directive Quick Reference - Apache HTTP Server
■ご使用のOSとブラウザでの動作確認
当方の環境(プロキシーサーバー経由のアクセス)では
以下のようにどれも文字化けしませんでした。
レンタル見本
WinXP SP2+IE6 OK
WinXP SP2+FireFox1.0 OK
仮アップ
WinXP SP2+IE6 OK
WinXP SP2+FireFox1.0 OK
■上記の文字化け理由と対策
確認していただきたいのが、Webサーバーの
エンコード設定です。
WebサーバーにApacheを使っているのであれば、httpd.confを確認してみてください。
AddDefaultCharsetディレクティブが指定されており、PHPの出力が明示的にShift_JISで出力されるようになっていませんか?(Apache 1.3系/2.0系共通)
エンコードはWebサーバーに指定させず、ブラウザに判定させるか、もしくはHTTPヘッダーのContent-Typeの出力時に自前で指定するかした方が無難です。
Apache 2.0系の場合、AddCharset ディレクティブも確認した方がよいかもしれません。(.phpをShift_JISにマップしていないかどうかを。)
ご回答有難うございます。
なんだかすごくドンピシャで有益そうなご回答だと思うんですが
不勉強なものでチンプンカンプンです…(爆)
借りてきたカートのソースには
と指定されているんですが、それが文字化けしてしまうというのは
やはりサーバ側の問題なんでしょうか?
見本がアップしてあるWebサーバはレンタルしてるものなんですが。
一体どうすれば良いでしょう…?
http://popup.tok2.com/home2/yosiaki/AAAA.php
Web_Cart 商品一覧
URLはあなたのページをHPビルダー
で取り込んで再アップしたものです。
ただ一つ違うのはcart.cssファイルが
あなたのものはcart/になっていることです。
メモ帳の上に黄色い菊マークみたいのが
付いたのがcssファイルですので
もう一度確認してください。
ご回答有難うございます。
ビルダー使いではないもので意味がわかりません。すいません。
特に「メモ帳の上に黄色い菊マークみたいのが付いたのがcssファイル」
というのが…ビルダーだとそう表示されてるんでしょうか。
cssファイルの格納階層を変更しろという意味ですか?
でもこれはレンタル先の指定仕様なのですが…
http://www.vector.co.jp/soft/win95/writing/se083554.html
MKEditor for Windowsの詳細情報 : Vector ソフトを探す!
再回答で失礼します。
確認なのですが、
今回の「文字化け」はWebページ全体の文字化けではなく、
カテゴリの選択肢(OPTION内文字列)のみの文字化けということでよろしいでしょうか?
あらためて確認したら、以下のようになりました。
hino-rc.orgにアップしてある方
WinXP SP2+IE6 OK
WinXP SP2+FireFox1.0 NG(カテゴリの選択肢のみが文字化け)
■原因はsettei.phpがシフトJIS形式でアップされていることですが、
これに至った過程は2通り考えられます。(一部、1番目の回答と重複します。)
最初に考えられるのは、お使いのテキストエディタはEUC-JPに対応しているものの、
保存時に(デフォルトで)シフトJIS形式で保存してしまっていることによるものです。
これについては、テキストエディタの設定(ファイル保存時のエンコード設定)を
調べてください。
もしもよくわからなかったら、別のテキストエディタ(MKEditorかTeraPadを推奨)を
使ってみてください。(1番目と2番目のURL)
次に考えられるのは、settei.php自体はEUC-JP形式で保存されているものの、
FTPソフトでアップするときに、FTPソフトが文字コードを勝手にシフトJIS形式に
変換してしまっていることによるものです。
特にFFFTPをお使いの場合は、「転送モード:アスキー、ホストの漢字コード:無変換」で
転送しているかどうかを確認してください。(3番目のURL)
これらのことを念頭に置きつつ、
ダウンロードしたスクリプト類を一度破棄した上で、
再度ダウンロード、解凍しなおすところから始めることを推奨します。
(すべて最初からやり直した方が確実です。)
■次に、最初の回答(3番目の回答)の続きです。
今回の文字化けとはおそらく関係がないのですが、
ご参考用に記載させていただきます。
サーバーにアップしてあるPHPをクライアントマシンからアクセスしようとすると、
Webサーバーでは(大ざっぱに言って)以下のような処理が行われます。
(1)ブラウザから
にアクセスする。
(2)Webサーバーソフト(この場合はApache)が上記要求を受け付ける。
(3)当該PHPファイルをサーバーマシン内から探す。
(4)当該PHPファイルをPHP処理プログラム(PHPのスクリプトを処理するプログラム)に処理させる。
(5)(4)で処理して生成されたHTMLをWebサーバーソフトがクライアントに向けて送り出す。
(5)でHTMLデータを送信する際に「このHTMLデータのエンコードはShift_JISです」といった情報を
付加することができます。これがHTTPヘッダです。(4番目のURL)
PHPのソースコードに
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-JP”>
が記述されていたとしても、HTTPヘッダで誤ったエンコード情報を送ると、
ブラウザはその誤った情報に基づいてWebページを表示しようとしてしまいます。
(ブラウザはMETAタグでのエンコード指定よりもHTTPヘッダのエンコード指定を優先します。)
■httpd.confというのはApacheの設定ファイルです。Apacheの動作に関係する
パラメータを記述します。(ディレクティブと言っているのはパラメータのことであるとお考えください。)
AddDefaultCharsetやAddCharsetは、Apacheが送り出すHTMLデータなどの
エンコードが何であるのかをあらかじめApacheに教えておくためのものです。
(これが適切に設定されると、クライアントマシンでの文字化けを減らすことができる。)
今回これを指摘したのは、「もしかしたら、.phpのファイルのエンコードがShift_JISであると設定されていて、
EUC-JPエンコードのPHPでもブラウザにはShift_JISであるという誤った情報と共に
送信されているのではないか」と考えたからです。
対策としては、「レンタルサーバー業者に問い合わせてください」となるところですが、
仮に問い合わせに応じてくれたとしても、設定変更に応じてくれる可能性は低いので、
httpd.conf修正以外の方法を提示します。
(1).htaccessを使う方法
上記のようなディレクティブを記述したファイルを作成し、サーバーのショッピングカートPHPのある
フォルダに「.htaccess」というファイル名でアップします。(5番目と6番目のURL)
記述するディレクティブとしては、AddDefaultCharset、AddCharsetの他に
AddTypeなどが考えられます。
(httpd.confがどう設定されているかによって、.htaccessに記述するディレクティブは変わってきます。)
長くなりましたが、最初に記述した方法で解決するはずです。
ご健闘を祈ります。
http://www.vector.co.jp/soft/win95/writing/se104390.html
TeraPadの詳細情報 : Vector ソフトを探す!
http://www2.biglobe.ne.jp/~sota/ffftp-qa.html
Sota's Web Page (FFFTP Q&A)
http://www.atmarkit.co.jp/fnetwork/rensai/tcp02/01.html
@IT:TCP/IPアレルギー撲滅ドリル【超実践編】(2)
http://httpd.apache.org/docs-2.0/howto/htaccess.html
Apache Tutorial: .htaccess files - Apache HTTP Server
http://www.shtml.jp/mojibake/meta.html
メタタグによる文字コード指定の有効性
再度の詳しいご回答有難うございます。助かります。
ためしに、何もいじっていない素のsettei.phpを別フォルダにアップして
みましたところ、文字化けしなかったとの報告でした。
おそらく、ご指摘の「テキストエディタはEUC-JPに対応しているものの、
保存時に(デフォルトで)シフトJIS形式で保存してしまっている」
状態なのだと思われます。
教えて頂いたエディタで再編集いたします。
サーバの事も、わかりやすいご説明感謝いたします。
これを機会に、ちゃんと勉強いたします。
皆様、おつきあいくださり有難うございました。
ご回答有難うございます。
確認してみます。