• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字化け)

文字化け問題とは?

このQ&Aのポイント
  • 文字化け問題とは、テキストデータが正常に表示されないことを指します。
  • 文字化けは、文字コードの設定ミスやデータの変換エラーなどが原因となります。
  • 文字化けが発生した場合、正しい文字コードを設定するか、データの変換を行う必要があります。

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

  • ベストアンサー
  • arata
  • ベストアンサー率49% (139/279)
回答No.6

>スクリプトのコード体系とcharsetの指定がずれていませんか? > >上記の意味がわからなくて・・・。どうしたら良いのですか?? この件ですが、angelyがおつくりになったPerlスクリプトの >ありがとうございました。 >至急お送りいたします。 の文字は、EUC,シフトJIS,JIS漢字のいずれで作成されてますか?この文字のコードとcharsetで指定したコードの種類が違えば、化けますよ。 FTPでファイル転送しているのであれば、FTPで漢字コード変換をかけていることもありますので、確認してみてください。

angely
質問者

お礼

arataさん、素敵です。まさに、『FTPでファイル転送しているのであれば、FTPで漢字コード変換をかけていることもありますので、確認してみてください。』でした。感動です。何度も答えてくれてありがとうございます。以前質問出したときは、見捨てられたので、今回もいつ見捨てられるんじゃないかと心配でした。 インターネットって簡単に手を引こうと思えば引けるのに・・・。今度は上記のものを自分用のスクリプトに書き換える作業です。また何かあったら質問にのせるので、お願いしますね。 ではでは、本当にありがとうございました。

その他の回答 (5)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.5

> &jcode'convert(*form,'sjis'); の記述が、気になりますね。  formって変数は、多分クエリーを分解して「$FORM{KEY}=VALUE」となるようにセットしたハッシュだと思うんですが、どうでしょうか?  もしそうなら、こんな風に書き換えてみて下さい。   if ($ENV{'REQUEST_METHOD'} =~ /POST/i) {     read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});   } else {     $buffer = $ENV{'QUERY_STRING'};   }   @pairs = split(/&/,$buffer);   foreach (@pairs) {     my ($key,$val) = split(/=/,$_);     $val =~ tr/+/ /;     $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;     &jcode::convert(\$val, 'sjis');     $FORM{$key} = $val;   } # 「Perl 5」を想定しています。

angely
質問者

補足

お返事ありがとうございます。 教えていただいた通り、スクリプトを変更したんですが こんどは表示ができなくなってしましました。 formって変数は、多分クエリーを分解して「$FORM{KEY}=VALUE」となるようにセットしたハッシュだと思うんですが、どうでしょうか? 上記の内容の意味がわからなくて・・・。 マニュアル本についてきたCD-ROMをコピーして使っているので 自分ではとくに何もしていないんです・・・。

  • arata
  • ベストアンサー率49% (139/279)
回答No.4

もしかして、間違っていたら「ごめんなさい」なので すが、 &jcode'convert(*form,'sjis'); って、入力側(ウェブブラウザ→サーバー)のコード をシフトJISに変換している部分ですよね? これは、出力(サーバー→ウェブブラウザ)するデータ の文字コードとは関係ないと思うのですが、スクリプト のコード体系とcharsetの指定がずれていませんか?

angely
質問者

補足

見捨てないでくれてありがとうです。 マニュアル本を読んだら、&jcode'convert(*form,'sjis'); は入力側の文字変換のことだと書いてありました。 じゃあ、文字化けには関係ないですよね? スクリプトのコード体系とcharsetの指定がずれていませんか? 上記の意味がわからなくて・・・。どうしたら良いのですか??

  • arata
  • ベストアンサー率49% (139/279)
回答No.3

print "Content-Type: text/html;charset=Shift_JIS\n\n"; 上記以外に、メタタグをつけると直るかもしれません。 print << "END_OF_HTML"; <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Shift_JIS"> <HTML>

angely
質問者

補足

何度もありがとうございます。 メタタグをつけてみたのですが、状況は変わらすです・・・。 送信ボタンを押してからの画面が文字化けするんですけど、 その前の画面のオーダーフォームは文字化けしないんですよぉ。 これはなぜなんでしょう? # 文字コード変換サブルーチン &jcode'convert(*form,'sjis'); というスクリプトに関係あるのでしょうか??

  • arata
  • ベストアンサー率49% (139/279)
回答No.2

まず、charsetのところですが、-ではなくて、 charset=だったと思うのですが。 それから、Perlかシェルのスクリプトだと思います が、スクリプトの文字コードとContent=で指定する 文字コードは一致させてください。 スクリプトがシフトJISならShift_JISですし、EUC ならeuc-jpとしてください。 では

angely
質問者

補足

ありがとうございます。 スクリプトの文字コードは # 文字コード変換サブルーチン &jcode'convert(*form,'sjis'); です。なので、Content・・・では Shift_JIS にしました。 それでも文字化けが生じます。 なぜでしょう?? おわかりになりましたら、教えてください。

  • ryouki
  • ベストアンサー率50% (11/22)
回答No.1

文字コードは何をお使いでしょう?わかんない?(^^; わかんないなら、その化けた CGI を表示させた状態で、エンコードを変えてみましょう。 InternetExplorer なら、上メニューの[表示]-[エンコード]。 ShiftJIS/EUC/JIS が、日本語のコードです。どれに当てはまるか試してみる。 まぁ、普通の Win9x とか Mac とかなら Shift-JIS 使ってる気がするので、 print "Content-type:text/html\n\n"; の行を print "Content-type:text/html;charset-Shift_JIS\n\n"; ってしてあげると幸せかも知れません。

angely
質問者

補足

早速ありがとうございます。 エンコード調べてみました。 シフト JIS というものになっていたので、 スクリプトを教えていただいたように(print "Content-type:text/html;charset-Shift_JIS\n\n"; ) 直してみたのですが、結果は同じでした。 どうしたらよいのでしょうか??

関連するQ&A

専門家に質問してみよう