- ベストアンサー
CGIで表示したものの文字化けについて
- CGIで表示する際に文字化けが発生する問題があります。
- 特にブラウザの「戻る」を使用すると、一部のテキストが文字化けします。
- 原因は不明ですが、文字コードはEUCです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>そのほかのコードではEUCが一番文字化けが少ないので、 でたらめでした。SJISがよろしいようです。
その他の回答 (3)
- nta
- ベストアンサー率78% (1525/1942)
EUCで元々のテキストが書かれているのでしたらUnicode文字が含まれる可能性はありません。Unicode は世界中の文字を2バイトで表現するように割り当てを行った文字コードの規格です。Unicodeに統一すれば文字化けはほぼなくなると思いますが、今のところUnicodeに対応したテキストエディタが少なく、1バイト文字との混在を許さないので、CGIのプログラムをUnicodeで直接書くことが難しいのが難点です。 そのほかのコードではEUCが一番文字化けが少ないのでこれでいいと思いますが。下記のリンクにあげたYahooがとっているように"\xFD\xFE"を先頭に挿入してみてはいかがでしょうか。 プロキシサーバの設定があるということはないでしょうね。
- nta
- ベストアンサー率78% (1525/1942)
>普通は自動選択にはチェックはつけるものですか? IEのことであるならば(日本語)自動選択にチェックがついていることは多いと思われます。 元々のテキストファイルは読み込むときにEUCに変換するのですか、それとも最初からEUCで記述したものなのでしょうか。Unicode文字が混じっていると変換不能で混乱する可能性はあります。また、テキストファイルの2行目から文字化けを発生するということですから、そのあたりに漢字コード識別で問題になる「半角カタカナ」が含まれていませんか。
補足
またまたお返事ありがとうございます。 テキストファイルは最初からEUCで記述しています。 >Unicode文字が混じっていると変換不能で混乱する可能性はあります。 Unicode文字とはどうゆうものなのでしょうか?ちなみに半角カタカナは含まれていません。
- nta
- ベストアンサー率78% (1525/1942)
CGI出力時にはメタタグで文字コードを指定していますか。 <meta http-equiv="content-type" content="text/html; charset=euc-jp"> 日本語の自動認識であるために不安定ではないかと思うのですが。 ブラウザ内をクリックする場合にはサーバにリクエストを出します。しかし、「戻る」ボタンの場合は多くの場合は「インターネット一時キャッシュ」からの読み込みを行います。上記のメタタグがあると両者の動作が安定するはずです。
補足
お返事ありがとうございます。 メタタグで文字コードの指定はしてあります。 色々調べてみたのですが、ブラウザの「表示」→「エンコード」のところが ●日本語(EUC) が選択されていて、さらに一番上の自動選択の部分にチェックがついていると文字化けになるみたいです。 普通は自動選択にはチェックはつけるものですか?
お礼
>Yahooがとっているように"\xFD\xFE"を先頭に挿入してみてはいかがでしょうか。 この方法でやってみたのですがやり方が間違っているのか、うまくできませんでした。 CGIファイルのContent-typeを記述している1行を print "Content-type: text/html; charset=euc-jp\n\n"; とするとうまくできました。 いろいろ教えて頂きとても助かりました。 どうもありがとうございました。