ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:torasan117 文字化けの事で?
困り度:
  • すぐに回答を!
あるCGIを無料でダウンロードしました。

そのCGIはステップメールなのですが、使ってみていくつか弱点がありました。

特に気になるのはgmailだと文字化けしてしまう事です。

CGIとか全然いじった事がないからよくわからいのですが、プログラムのなかにデコード処理とかあったのでたぶんこれかと思いました。


以下のプログラムで何かおかしい(文字化けを起こす原因)箇所はあるのでしょうか?


#//■デコード

sub decode {

local($buf, $key, $val);
if (($ENV{'REQUEST_METHOD'} eq "POST") and ($post_flag ne 1)) {
$post_flag=1;
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$post_flag=0;
$buf = $ENV{'QUERY_STRING'};
}

#csystem
($lc)=jcode::csystem($SCRIPT);

foreach (split(/&/, $buf)) {
($key, $val) = split(/=/);
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# S-JISコード変換
&jcode'convert(*val, "sjis", "", "z");

# 不要コード排除
$val =~ s/"/"/g;
$val =~ s/</&lt;/g;
$val =~ s/>/&gt;/g;

if($key ne "comment"){ $val =~ s/\r|\n|\0//g; }else{ $val =~ s/\r|\0//g; }

$in{$key} = $val;

}
質問投稿日時:08/03/12 16:36
質問番号:3856413
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

 

回答者:sakusaker7 >この場合はもうどうしょうもないのでしょうか?
jcode.pl を使う限りでは。
UTF-8も扱うことのできるJcode.pmを使うとか手段はありますが、
細大漏らさず説明を書くには文字数が足りません。

あるいはgmail側の設定の

Use default text encoding for outgoing messages
Use Unicode (UTF-8) encoding for outgoing messages

というメッセージの符号化に関する選択で上の default text encoding
を選択するとか。
こっちは自信ないですけど。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/13 02:24
回答番号:No.2
この回答へのお礼ご回答ありがとうございます。
今回はこのCGIはあきらめました。別のCGIがあったのでそちらを使います。

回答

 

回答者:sakusaker7 たぶん gmailからは文字コードが utf-8できていて、
># S-JISコード変換
>&jcode'convert(*val, "sjis", "", "z");

jcode.plで行っているであろうこの変換が失敗している(jcode.plはutf-8をサポートしていません)
のではないかと思います。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/12 17:02
回答番号:No.1
この回答へのお礼ご回答ありがとうございます。
この場合はもうどうしょうもないのでしょうか?
対策などあったら教えてください。

よろしくお願いします。
 
最新から表示回答順に表示