質問 |
||
| 質問者: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/</</g; $val =~ s/>/>/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 |
|
| この回答へのお礼 | ご回答ありがとうございます。 この場合はもうどうしょうもないのでしょうか? 対策などあったら教えてください。 よろしくお願いします。 |