以下のように作成して、実際に表示すると文字化けします。
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
です。お願いします・・・。
No.6ベストアンサー
- 回答日時:
>スクリプトのコード体系とcharsetの指定がずれていませんか?
>
>上記の意味がわからなくて・・・。どうしたら良いのですか??
この件ですが、angelyがおつくりになったPerlスクリプトの
>ありがとうございました。
>至急お送りいたします。
の文字は、EUC,シフトJIS,JIS漢字のいずれで作成されてますか?この文字のコードとcharsetで指定したコードの種類が違えば、化けますよ。
FTPでファイル転送しているのであれば、FTPで漢字コード変換をかけていることもありますので、確認してみてください。
arataさん、素敵です。まさに、『FTPでファイル転送しているのであれば、FTPで漢字コード変換をかけていることもありますので、確認してみてください。』でした。感動です。何度も答えてくれてありがとうございます。以前質問出したときは、見捨てられたので、今回もいつ見捨てられるんじゃないかと心配でした。
インターネットって簡単に手を引こうと思えば引けるのに・・・。今度は上記のものを自分用のスクリプトに書き換える作業です。また何かあったら質問にのせるので、お願いしますね。
ではでは、本当にありがとうございました。
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」を想定しています。
この回答への補足
お返事ありがとうございます。
教えていただいた通り、スクリプトを変更したんですが
こんどは表示ができなくなってしましました。
formって変数は、多分クエリーを分解して「$FORM{KEY}=VALUE」となるようにセットしたハッシュだと思うんですが、どうでしょうか?
上記の内容の意味がわからなくて・・・。
マニュアル本についてきたCD-ROMをコピーして使っているので
自分ではとくに何もしていないんです・・・。
No.4
- 回答日時:
もしかして、間違っていたら「ごめんなさい」なので
すが、
&jcode'convert(*form,'sjis');
って、入力側(ウェブブラウザ→サーバー)のコード
をシフトJISに変換している部分ですよね?
これは、出力(サーバー→ウェブブラウザ)するデータ
の文字コードとは関係ないと思うのですが、スクリプト
のコード体系とcharsetの指定がずれていませんか?
この回答への補足
見捨てないでくれてありがとうです。
マニュアル本を読んだら、&jcode'convert(*form,'sjis');
は入力側の文字変換のことだと書いてありました。
じゃあ、文字化けには関係ないですよね?
スクリプトのコード体系とcharsetの指定がずれていませんか?
上記の意味がわからなくて・・・。どうしたら良いのですか??
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>
この回答への補足
何度もありがとうございます。
メタタグをつけてみたのですが、状況は変わらすです・・・。
送信ボタンを押してからの画面が文字化けするんですけど、
その前の画面のオーダーフォームは文字化けしないんですよぉ。
これはなぜなんでしょう?
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
というスクリプトに関係あるのでしょうか??
No.2
- 回答日時:
まず、charsetのところですが、-ではなくて、
charset=だったと思うのですが。
それから、Perlかシェルのスクリプトだと思います
が、スクリプトの文字コードとContent=で指定する
文字コードは一致させてください。
スクリプトがシフトJISならShift_JISですし、EUC
ならeuc-jpとしてください。
では
この回答への補足
ありがとうございます。
スクリプトの文字コードは
# 文字コード変換サブルーチン
&jcode'convert(*form,'sjis');
です。なので、Content・・・では
Shift_JIS にしました。
それでも文字化けが生じます。
なぜでしょう??
おわかりになりましたら、教えてください。
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";
ってしてあげると幸せかも知れません。
この回答への補足
早速ありがとうございます。
エンコード調べてみました。
シフト JIS というものになっていたので、
スクリプトを教えていただいたように(print "Content-type:text/html;charset-Shift_JIS\n\n"; )
直してみたのですが、結果は同じでした。
どうしたらよいのでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
&jcode'convert(しても文字化け...
-
CGIメールフォームのメールが文...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
バイナリとBCDコード
-
stable diffusionのエラー
-
エクセルシート名の制限を変更...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
Excel VBA メール作成について ...
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
ビットスワップとバイトスワッ...
-
1KBが1024byteな理由
-
ピクセル,dpiから容量(バイト...
-
ビットデータのチェック方法
-
SQLで1バイト、2バイト混在...
-
VBAでUnicodeしか存在しない文...
-
エクセルVBA:日付データの変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
&jcode'convert(しても文字化け...
-
応募フォームなどの住所欄で最...
-
utf-8でメールを送信すると件名...
-
ESC/Pのテキスト印字の制...
-
全角カタカナチェックについて
-
CGIメールフォームのメールが文...
-
フォームメールを受信すると文...
-
SQLServerへの出し入れで文字化け
-
これはなんて文字コードかわか...
-
Window open パラメタについて
-
CGI掲示板の文字化け
-
文字コードsjisをUTF8に書き換...
-
CGIフォームから飛ばすメールが...
-
HttpURLConnection転送で漢字表示
-
PerlのCGIで全角スペースを入れて
-
.cgi でタグが勝手に変換されま...
-
CGI(Perl)の文字化けについて
-
検索窓の設置について
-
JavaScriptからCGI
-
perl cgi のエンコード SHIFT...
おすすめ情報