OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

文字化け

  • 困ってます
  • 質問No.120385
  • 閲覧数60
  • ありがとう数3
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 10% (1/10)

以下のように作成して、実際に表示すると文字化けします。
CGIは素人です・・。宜しくお願いします。

# -----ここから出力 -----
print "Content-type:text/html\n\n";

print << "END_OF_HTML";

<HTML>
<HEAD>
<TITLE>DOUBLE STEAL DESIGN MARKET</TITLE>
</HEAD>

<BODY background="bg2.gif">
<CENTER>
<B><FONT size="4">
<FONT color="red">
<BR>
ありがとうございました。
<P>
至急お送りいたします。</FONT>
<P>
<FONT color="blue">☆</FONT>
</B>
</CENTER>
</BODY>
</HTML>

END_OF_HTML


実際に表示される文字は・・・


^0!#(B
;j5^Aw?STDOUT_TOP!#(B

!y(B


です。お願いします・・・。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.6
レベル11

ベストアンサー率 49% (139/279)

>スクリプトのコード体系とcharsetの指定がずれていませんか?
>
>上記の意味がわからなくて・・・。どうしたら良いのですか??

この件ですが、angelyがおつくりになったPerlスクリプトの

>ありがとうございました。
>至急お送りいたします。

の文字は、EUC,シフトJIS,JIS漢字のいずれで作成されてますか?この文字のコードとcharsetで指定したコードの種類が違えば、化けますよ。

FTPでファイル転送しているのであれば、FTPで漢字コード変換をかけていることもありますので、確認してみてください。
お礼コメント
angely

お礼率 10% (1/10)

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

その他の回答 (全5件)

  • 回答No.1
レベル7

ベストアンサー率 50% (11/22)

文字コードは何をお使いでしょう?わかんない?(^^; わかんないなら、その化けた CGI を表示させた状態で、エンコードを変えてみましょう。 InternetExplorer なら、上メニューの[表示]-[エンコード]。 ShiftJIS/EUC/JIS が、日本語のコードです。どれに当てはまるか試してみる。 まぁ、普通の Win9x とか Mac とかなら Shift-JIS 使ってる気がす ...続きを読む
文字コードは何をお使いでしょう?わかんない?(^^;
わかんないなら、その化けた 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

お礼率 10% (1/10)

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

どうしたらよいのでしょうか??
投稿日時 - 2001-08-18 15:50:04
  • 回答No.2
レベル11

ベストアンサー率 49% (139/279)

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

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

では
補足コメント
angely

お礼率 10% (1/10)

ありがとうございます。

スクリプトの文字コードは
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
です。なので、Content・・・では
Shift_JIS にしました。
それでも文字化けが生じます。

なぜでしょう??
おわかりになりましたら、教えてください。
投稿日時 - 2001-08-18 23:25:58
  • 回答No.3
レベル11

ベストアンサー率 49% (139/279)

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

お礼率 10% (1/10)

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

ベストアンサー率 49% (139/279)

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

&jcode'convert(*form,'sjis');

って、入力側(ウェブブラウザ→サーバー)のコード
をシフトJISに変換している部分ですよね?

これは、出力(サーバー→ウェブブラウザ)するデータ
の文字コードとは関係ないと思うのですが、スクリプト
のコード体系とcharsetの指定がずれていませんか?
補足コメント
angely

お礼率 10% (1/10)

見捨てないでくれてありがとうです。
マニュアル本を読んだら、&jcode'convert(*form,'sjis');
は入力側の文字変換のことだと書いてありました。
じゃあ、文字化けには関係ないですよね?

スクリプトのコード体系とcharsetの指定がずれていませんか?

上記の意味がわからなくて・・・。どうしたら良いのですか??
投稿日時 - 2001-08-20 21:05:54
  • 回答No.5
レベル12

ベストアンサー率 75% (398/526)

> &jcode'convert(*form,'sjis'); の記述が、気になりますね。  formって変数は、多分クエリーを分解して「$FORM{KEY}=VALUE」となるようにセットしたハッシュだと思うんですが、どうでしょうか?  もしそうなら、こんな風に書き換えてみて下さい。   if ($ENV{'REQUEST_METH ...続きを読む
> &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

お礼率 10% (1/10)

お返事ありがとうございます。
教えていただいた通り、スクリプトを変更したんですが
こんどは表示ができなくなってしましました。

formって変数は、多分クエリーを分解して「$FORM{KEY}=VALUE」となるようにセットしたハッシュだと思うんですが、どうでしょうか?

上記の内容の意味がわからなくて・・・。
マニュアル本についてきたCD-ROMをコピーして使っているので
自分ではとくに何もしていないんです・・・。
投稿日時 - 2001-08-20 21:12:05
このQ&Aのテーマ
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ