FORMからsendmailを利用してメールを送信し、その結果を「送信できた」、「未入力項目がある」などを出力するHTMLとして出力するcgiを作ったのですがHTML出力が文字化けします。
メールのsubjectやbodyは文字化けせず正常に送信できます。HTMLにはMETAタグでeuc-jpやshift_jisと色々とトライしました。cgiもshift_jisとeuc-jp両方で試しましたがどちらも文字化けします。文字化けしているときにブラウザのエンコードで自動選択すると、ブラウザがcgiの使用コードに自動的に合わせてくれて正常に表示してくれますがこれがcgiを起動するたびで面倒です。エンコードを自動選択しないと文字化けしてそのときのブラウザが選択している文字コードは「西ヨーロッパ言語(ISO)です。
どうしたらブラウザに使用している文字コードを認識させるられるでしょうか?
No.3ベストアンサー
- 回答日時:
>これはスクリプトがまずいんでしょうか?
print "Content-type: text/html\n\n";
はHTTPヘッダと言いまして、HTMLを送信する前に『一度だけ』ブラウザに対して送信しなければならない宣言文になります。
つまり、お話しからすると書き加えた事によって2回送信された事になります。
スクリプトの途中に他に送信している行が見付かりませんでしょうか?
ところで、Webサーバの方でデフォルトのcharsetがISO-8859-1に設定されたままになっている様ですね。
出来ればWebサーバであるapache(挙動からapacheだと思われます)の設定ファイルに一文細工したいところ。
この回答への補足
回答ありがとうございます。
CGIモジュールを使用しています。その中で
print $query->header;
と記述していました。そこでこの行を削除したところ「Content-Type: text/html; charset=ISO-8859-1」は表示しなくなりました。他人の作ったCGIのためよく知らないで使用していました。これで私の質問は「完全解決」しました。ありがとうございました。
>出来ればWebサーバであるapache(挙動からapacheだと思われます)の設定ファイルに一文細工したいところ。
apacheを使用しています。設定ファイルとはhttpd.confだと思いますが、具体的にはどこをどうすればいいのか教えていただければ幸いです。本題とは少し外れますが宜しくお願いします。
No.4
- 回答日時:
httpd.conf の記述に、
>AddDefaultCharset ISO-8859-1
といった行が見つかった場合は、
>AddDefaultCharset Off
とすると ISO-8859-1 をデフォルトとして出力しなくなります。
参考URL:http://www2.i-e-c.co.jp/intro8.html
早速の回答、ありがとうございます。
使用しているのは OSはRedHatLinux7.3、apache-1.3.23ですが
>AddDefaultCharset ISO-8859-1 といった行が見つかった場合は、、、
このような行は見つかりませんでした。バージョンが違うようです。しかし本題は解決しました。
ありがとうございました。
No.2
- 回答日時:
たぶんperl辺りのスクリプト言語でcgiを書いているものだとします。
HTMLを出力する直前に、
> print "Content-type: text/html\n\n";
といった行が有るのではないかと思いますが、そこを
> print "Content-type: text/html;charset=shift_jis\n\n";
等として【HTTPヘッダ】にて明示的に文字コードを指定する様にします。
当然、出力するHTMLの"実"文字コードもそれに合わせてあげないといけません。
オマケ:明示的な文字コードの指定と実際のHTML内の文字コードが一致しているかどうかをデバグする際はIEよりもNN7が適している様です(経験談) :-)
この回答への補足
回答ありがとうございます。
>たぶんperl辺りのスクリプト言語でcgiを書いているものだとします。
perlで書いています。
>HTMLを出力する直前に、
>> print "Content-type: text/html\n\n";
>といった行が有るのではないかと思いますが、そこを
>> print "Content-type: text/html;charset=shift_jis\n\n";
>等として【HTTPヘッダ】にて明示的に文字コードを指定する様にします。
実は「print "Content-type: text/html\n\n"; 」は記述してありませんでした。そこでこれを記述すると文字化けはなくなりましたがブラウザのトップ部分にContent-Type: text/html; charset=ISO-8859-1 が表示されてしまいます。しかもスクリプトの先頭部分(#!/usr/local/bin/perl)直後に記述すれば文字化けはなくなりますがエラー処理やメール送信処理が終わった後のHTML出力直前に記述するとやはり文字化けします。
これはスクリプトがまずいんでしょうか?
print "Content-type: text/html に「charset=shift_jis」を明記してもしなくても結果は変わらないようです。
No.1
- 回答日時:
えーと、HTML表示のヘッダー部分を下記のようにしてみてください。
<!DOCUTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>あなたのページの名前</title>
</head>
<html>タグのlang="ja"がポイントです。
この回答への補足
回答ありがとうございます。
><html>タグのlang="ja"がポイントです。
lang="ja"はすでに記述済みですが文字化けします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メールソフト・メールサービス) outlookからの送信された件名が文字化けします 2 2023/04/18 14:29
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- HTML・CSS HTMLエディタBracketsの文字化け 3 2022/04/28 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- その他(メールソフト・メールサービス) 【GAS】GMail自動送信 2 2022/09/04 06:19
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cgiからsendmailを送信で文字化け
-
プログラミングについての質問...
-
ラジオボタンが両方とも選択で...
-
wordの数式について 定積分を書...
-
INPUT TYPE
-
[HTML]プルダウンメニューの横...
-
チェックボックスの返す値
-
select値をhiddenのvalueに渡し...
-
複数ボタンのvalueを送れない
-
「value」に2つの値をセットす...
-
EXCELとの連携
-
WEBページを強制的に横画面で見...
-
リストボックス(multipleなsel...
-
CGIで得た内容をHTMlページに代入
-
VB初心者。小数点以下の表示で...
-
XML::Simpleの使い方について
-
レスポンスが全く返ってこない
-
チェックボックスとセレクトボ...
-
シングルコーテーション(')と...
-
ブックマークからのアクセスを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ショッピングカートのクッキー...
-
cgiからsendmailを送信で文字化け
-
プログラミングについての質問...
-
perlを難読化、暗号化させたい
-
メール送信後のHTMLが文字化け...
-
content-dispositionによるファ...
-
.htaccessでサーバエラー
-
CGI実行できない。ソースが表示...
-
cgiで動画ファイルをアップロー...
-
CGIから移動したページでのリン...
-
MySQL+phpでHTML表示をhif...
-
UTF-8で文字化けしないようにす...
-
HPが文字化けしてしまいます
-
文字化けが出現
-
WEBアプリケーションからフォル...
-
CGIプログラムを使った申し込み...
-
SUN BBSの改造方法
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
WEBページを強制的に横画面で見...
おすすめ情報