【エンコード不具合】

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)
●「ありません」「レンタル先に問い合わせて」

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:taka-hr No.1

回答回数57ベストアンサー獲得回数4

ポイント20pt

まず動作確認ですが

WindowsXP + IE6, Windows2000 + FireFox1.0 で

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

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

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

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

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

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

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

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

id:pamu

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

確認してみます。

2005/02/17 12:24:24
id:wata5513 No.2

回答回数57ベストアンサー獲得回数0

ポイント10pt

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

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

2.winXP Pro Netscape 7.1 では

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

<a href=¥”

¥”>Yahoo!</A>

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

id:pamu

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

新たな謎が!

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

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

2005/02/17 12:25:59
id:Beth No.3

回答回数94ベストアンサー獲得回数1

ポイント20pt

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にマップしていないかどうかを。)

id:pamu

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

なんだかすごくドンピシャで有益そうなご回答だと思うんですが

不勉強なものでチンプンカンプンです…(爆)

借りてきたカートのソースには

と指定されているんですが、それが文字化けしてしまうというのは

やはりサーバ側の問題なんでしょうか?

見本がアップしてあるWebサーバはレンタルしてるものなんですが。

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

2005/02/17 13:22:57
id:yosiaki No.4

回答回数96ベストアンサー獲得回数0

ポイント10pt

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

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

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

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

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

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

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

id:pamu

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

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

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

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

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

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

2005/02/17 15:06:42
id:Beth No.5

回答回数94ベストアンサー獲得回数1

ポイント150pt

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://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

メタタグによる文字コード指定の有効性

id:pamu

再度の詳しいご回答有難うございます。助かります。

ためしに、何もいじっていない素のsettei.phpを別フォルダにアップして

みましたところ、文字化けしなかったとの報告でした。

おそらく、ご指摘の「テキストエディタはEUC-JPに対応しているものの、

保存時に(デフォルトで)シフトJIS形式で保存してしまっている」

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

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

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

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

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

2005/02/18 13:20:05

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません