さくらインターネットのCGIで作ったメールフォームで送信すると文字化けしてしまいます。容易に直ると思いきや、まったく手の施しようがありません。どなたか教えていただけますよう宜しくお願いします。
さくらインターネットには解決方法として以下の方法が挙げられています。具体的な方法を聞いたところサービスの対象でないとのことでした。
「MacOS X」と、ウェブブラウザ「Safari」や「Internet Explorer (IE)」の一部のバージョンの組み合わせで、記号を入力すると文字化けを起す現象が報告されています。ブラウザの仕様またはバグによるものと考えられますので、ブラウザを変えてお試しください。
過去に文字化けになった方の質問も多くあるようでかぶってしまい申し訳ないのですが具体的な対処方法を宜しくお願いします。
No.6ベストアンサー
- 回答日時:
>もし他に対処法を思いつかれるようでしたら是非お教え下さい
一点思いつきました。
送られてきたメールのヘッターをみてください
(OutlookExpressであればメールを選択し右クリック→プロパティ→詳細)
Content-type: text/plain;charset="ISO-2022-JP"
が記述されているでしょうか?
もし、
Content-type: text/plain;
だけでしたら、
"Content-Type: text/plain;\n\n";
と記述されているところを探して、
"Content-type: text/plain;charset=\"ISO-2022-JP\"\n\n";
に書き換えてみてください
この回答への補足
こんにちは。ありがとうございます。
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
とありました。概ね良いようですが、 "" が無いのは関係あるのでしょうか?
いろいろ教えてくださり本当にありがとうございました。
ジャングルという会社にはコンピューターの故障って言われました。
もう少し検討したいと思います。
No.5
- 回答日時:
SendMail.plのその箇所の最初に
$charset = &jcode::getcode(\$body);
を追加しただけで効果があるかも知れません
(半角カタカナだけでメールが書かれたら文字化けしますが)
formの中に判別用のコードを追加した場合は、
&jcode::getcode(\$form{'codeck'});
※$form{'codeck'}はcgiの入力部に依存するので参考までに書いているだけです
この回答への補足
こんにちは。素人の私にいろいろと教えていただきありがとうございます。
上記の事項や今までお聞きしたことをいろいろと試してみたのですが
特に変わった変化はありませんでした。
もし他に対処法を思いつかれるようでしたら是非お教え下さい。
もし見つからないようであれば、明日にでも一度cgi作成者に問い合わせてみようと思います。
お礼のポイントが最大20ポイントしかないことが大変悔やまれます。
宜しければもう少しお教えいただけますようにお願い致します。
No.4
- 回答日時:
>ファイルのダウンロードというものが始まり
actionのcgi指定先の問題かな?と思います
(actionで送り先はhttp://~で指定してある訳じゃないですよね)
$charset = 'sjis';
の一カ所で後で何に変換するかを決めていると思います
&jcode'convert(*key, 'sjis');
ではなく、
&jcode'convert(*key, $charset);
の様に書いてあるはず
convertは、
SendMail.pl
mimer.pl
mimew.pl
のどれか(or全部?)に入っていると思います
※どこかで配布されているcgiでしたらurlを書いてみてください
この回答への補足
お返事ありがとうございます。
配布はされてないんです。
ビルダーのデザインテンプレートビジネス版で、ジャングルというところが出しているものです。設定は簡単に出来るように説明書には書いてあるのですが、今回の件以外にも修正ばかりです。。
一度今回教えていただいた修正を試してみます。
本当にご丁寧にありがとうございます。
mimer.plに以下の記述がありました。
## charset=`ISO-2022-JP',encoding=`B' の encoded-word にマッチするパターン
$match_mime = '=\?[Ii][Ss][Oo]-2022-[Jj][Pp]\?[Bb]\?([A-Za-z0-9\+\/]+)=*\?=';
SendMail.plには以下の記述がありました。
# 半角カナを全角カナに変換,文字コードをJISに変換
&jcode::convert(\$to_name, 'jis', $charset, 'z') if $to_name;
&jcode::convert(\$from_name, 'jis', $charset, 'z') if $from_name;
&jcode::convert(\$subject, 'jis', $charset, 'z') if $subject;
&jcode::convert(\$body, 'jis', $charset, 'z');
3回見直しましたが、これ以外には見当たりません。
No.3
- 回答日時:
<form action="mail.cgi" method="POST">
~省略~
<input type="hidden" name="codeck" value="あいうえお">
</form>
のようにformの中に識別用のコードを入れます。
cgiの最後辺りに、
sub conv_s{
my($dt,$ck)=@_;
my($n,$icode)=&jcode'getcode(\$ck);
$$dt = &jcode'sjis($$dt,'euc') if($icode eq 'euc');
$$dt = &jcode'sjis($$dt,'jis') if($icode eq 'jis');
}
こんな感じのサブルーチンを置き、
&jcode'convert(*key, 'sjis');
などとconvertを使っている所を
conv_s(\$key,$form{'codeck'});
に置き換えます(※入力データが$form{'codeck'}に入るかどうかはcgiの中身を見てください)
この回答への補足
こんばんは。ご丁寧にありがとうございます。
<input・・・あいうえお">の部分をhtmlに入れてみました。下には何も無かったのでビルダーのプレビューから試しに送信してみました。
すると、ファイルのダウンロードというものが始まり、終わる気配がありません。そこで一旦閉じてビルダーを開けてみると修正があるとのコメントと同時にcgiが自動的に出てきました。
cgiも見てみたのですが、&jcode'convert(*key, 'sjis');などとconvertを使っている所はありませんでした。変わりに、
エンコード$charset = 'sjis';というのがありましたが何か関係あるのでしょうか?
このcgiは、他に contact_conf.inc contact_error.inc contact_thanks.inc body mac default_css.js win_ie.css win_nn.css FormData.pm KCatch.pm SendMail.pl mimer.pl mimew.pl jcodeがあります。
jcodeには、&jcode'convert(*line, $ocode [, $icode [, $option]])
というものがあるのですが、教えていただいたものは見当たりません。これでよいのでしょうか?
ANo.4の補足です。
それぞれの番号のファイルに以下の記述がありました。
(1)FormData.pm
#--半角カナ→全角カナ変換----------------
&jcode'h2z_sjis(*value);
&jcode'convert(*value,'sjis');
(2)KCatch.pm
if( $argv->{jcode} and defined $jcode::version ) {
1 if defined $jcode::version; # (not typo)
foreach my $str ( @$oarray ) {
&jcode::convert( \$str, $argv->{jcode} );
jcodeのファイルにはjcode convert が良く出てきます。
この辺も関係あるのでしょうか?
No.1
- 回答日時:
恐らくShift JISやEUCなどのコード判定でミスがでるのだと思います
(jcode.plなどで変換しているんですよね?)
この場合はメールフォームに隠しフィールドを追加して、
<input type="hidden" name="codeck" value="あいうえお">
などとしておき、
cgi側で何のコードがこれで判定して決めうちで変換するようにすれば治ると思います
この回答への補足
こんにちは。ご丁寧にありがとうございます。
jcode.plで変換しているかどうかわかりませんが、jcode.plファイルがあるのでそうだと思います。
<input type="hidden" name="codeck" value="あいうえお">
は具体的にどの場所に置けば良いのでしょうか?
追加の質問になりますがどうか宜しくお願い致します。
(1)シフトJISですと、お名前、メールアドレス、内容、送信内容をご確認の上、ご送信下さい、などのこちらが用意したタイトルや文章は文字化けしません。
(2)Unicode(UTF-8)ですと、相手の回答内容だけが文字化けしません。
(3)EUOですと、どちらも文字化けします。
補足の補足ですがお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Evernote Evernote(エバーノート)の文字化け 1 2022/04/05 19:30
- HTML・CSS docxをmht形式で保存したファイルをedgeで開くと文字化けする 1 2022/07/29 13:14
- その他(メールソフト・メールサービス) outlookからの送信された件名が文字化けします 2 2023/04/18 14:29
- Perl perlについての質問 2 2022/10/17 15:25
- その他(パソコン・周辺機器) EXCELで「WEBオプションの対象ブラウザ」を変更する方法 2 2023/04/12 15:44
- HTML・CSS HTMLエディタBracketsの文字化け 3 2022/04/28 14:50
- Illustrator(イラストレーター) Illustratorでオブジェクトの色が勝手に変わって困っています。 4 2022/09/04 18:47
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- 英語 私の実力と翻訳アプリなどでは専門的な言葉が多すぎて難しいので英語が得意な方にお願いしたいです。 内容 2 2022/06/13 00:32
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで自動ログインをしたいが...
-
ラジオボタンが両方とも選択で...
-
[HTML]プルダウンメニューの横...
-
select値をhiddenのvalueに渡し...
-
ブックマークからのアクセスを...
-
iPhoneでセレクトボックスが選...
-
INPUT TYPE
-
FORMのselectの選択肢を最初か...
-
python subprocessに関する質問
-
「value」に2つの値をセットす...
-
WEBページを強制的に横画面で見...
-
javascript ColorBoxの最大縦幅...
-
SUN BBSの改造方法
-
cgiからsendmailを送信で文字化け
-
postデータのあるページの再表示
-
JNAVIから提供されたメー...
-
チェックボックスでのvalue値の...
-
配列をグループ化して出力したい。
-
CGI(Perl)内での必須項目チェ...
-
CGI経由でのPDFファイルをダウ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム入力後の確認画面表示...
-
チェックボックスで得たデータ...
-
アクセス元URLによって振り分け...
-
htmlのフォームからcgiにデータ...
-
htmlからcgiに変数を配列にして...
-
フォームに入力した情報をその...
-
HDMLでCGIを使おうと思うのです...
-
(Perl)ReadParseによるハッシ...
-
perlで自動ログインをしたいが...
-
Javascriptの変数をCGIに送る方法
-
cgi-libを使って変数値渡しをし...
-
別サーバーのcgiへバイナリデー...
-
Rubyのmechanizeを利用したファ...
-
アンケートCGI作成について、fo...
-
perl cgiの変数の受け渡しがで...
-
自作掲示板で、長文を投稿でき...
-
掲示板「送信」に対して外部Jav...
-
CGIプログラムの最後に?がつい...
-
何れかが入力されていれば全て入力
-
アンケートフォーム複数ページ...
おすすめ情報