人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【エンコード不具合】
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)
●「ありません」「レンタル先に問い合わせて」

●質問者: pamu
●カテゴリ:ウェブ制作
✍キーワード:CGI ng OS pc かぶる
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● taka-hr
●20ポイント

まず動作確認ですが

WindowsXP + IE6, Windows2000 + FireFox1.0 で

確認しました。IE6で自動認識させればちゃんと

見えるのですが、表示→エンコード→日本語(自動選択)を

明示的に選択すると、シフトJISと認識され画面表示が消えました。

で、ソースを見ると、option 内の文字列だけシフトJISに

なっているようなのでそこをEUC-JPに直せばいいんじゃ

ないかと思います。settei.php にカテゴリ設定が

あるようですが、そのファイルがシフトJISに

なっていないかどうか確認してみてはどうでしょう。

◎質問者からの返答

ご回答有難うございます。

確認してみます。


2 ● wata5513
●10ポイント

1.については申し訳ありません。phpは分野外なので。

2.winXP Pro IE6.0 どちらも正しく表示されました。

2.winXP Pro Netscape 7.1 では

一部タグがエラーになります。

<a href=¥”

http://www.yahoo.co.jp/

Yahoo! JAPAN

¥”>Yahoo!</A>

上記のようなものが出力されます。

◎質問者からの返答

ご回答有難うございます。

新たな謎が!

こちらの謎も判る方、お答え頂けますでしょうか?

私もphp判りません…(爆)


3 ● Beth
●20ポイント

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サーバはレンタルしてるものなんですが。

一体どうすれば良いでしょう…?


4 ● yosiaki
●10ポイント

http://popup.tok2.com/home2/yosiaki/AAAA.php

Web_Cart 商品一覧

URLはあなたのページをHPビルダー

で取り込んで再アップしたものです。

ただ一つ違うのはcart.cssファイルが

あなたのものはcart/になっていることです。

メモ帳の上に黄色い菊マークみたいのが

付いたのがcssファイルですので

もう一度確認してください。

◎質問者からの返答

ご回答有難うございます。

ビルダー使いではないもので意味がわかりません。すいません。

特に「メモ帳の上に黄色い菊マークみたいのが付いたのがcssファイル」

というのが…ビルダーだとそう表示されてるんでしょうか。

cssファイルの格納階層を変更しろという意味ですか?

でもこれはレンタル先の指定仕様なのですが…


5 ● Beth
●150ポイント

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)ブラウザから

http://......filename.php

にアクセスする。

(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形式で保存してしまっている」

状態なのだと思われます。

教えて頂いたエディタで再編集いたします。

サーバの事も、わかりやすいご説明感謝いたします。

これを機会に、ちゃんと勉強いたします。

皆様、おつきあいくださり有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ