記事No | : 9995 |
投稿日 | : 2012/01/17(Tue) 09:11:37 |
タイトル | : Postmail(UTF-8)のメールで「〜」の文字化け |
ID情報 | : nikoban |
投稿者 | : トモ |
URL | : http://www.yes-noda.co.jp/ |
Postmail ver6.11(UTF-8版)を利用しています。
スレッド No.9853 で全角ハイフンの文字化けのお話がありましたが、
「〜」でも同様に文字化けが発生してしまいます。
WEBの入力内容の確認画面などでは正常に「〜」が表示されていますが、
メールの本文では「〜」が「\x{ff5e}」として表記されてしまいます。
例:数値1 = 1,000万円\x{ff5e}1,500万円
\x{ff5e}で調べまして、対処法となりそうなものは見つけたのですが、
ソース内のどこに配置すればよいのかわからずに困っています。
WEB画面では正常に表示されるので、送信メールの本文に適応したいのですが
うまくいきませんでした。
参考にしたURL
http://d.hatena.ne.jp/kopug/20060903
上記以外でも何か対処法がありましたらご教授ください。
恐れ入りますがよろしくお願いします。
記事No | : 9997 |
投稿日 | : 2012/01/17(Tue) 09:37:01 |
タイトル | : Re:追記です |
ID情報 | : nikoban |
投稿者 | : トモ |
URL | : http://www.yes-noda.co.jp/ |
> スレッド No.9853 で全角ハイフンの文字化けのお話がありましたが、
全角=>半角の変換は上記スレッドを参考にできますが、
できれば全角で表示したいための質問です、よろしくお願いします。
記事No | : 9998 |
投稿日 | : 2012/01/17(Tue) 09:51:27 |
タイトル | : Re: Postmail(UTF-8)のメールで「〜」の文字化け |
ID情報 | : Fuyuki |
投稿者 | : BAL |
URL | : http://www26.tok2.com/home/sumire1100/ |
チルダもハイフン同様に半角に変換すればよろしいかと。
●postmail.cgi
#-----------------------------------------------------------
# フォームデコード
#-----------------------------------------------------------
sub parse_form {
my (@key,@need,%in);
foreach my $key ( $cgi->param() ) {
# 複数値の場合はスペースで区切る
my $val = join(" ", $cgi->param($key));
# 無害化/改行変換
$key =~ s/[<>&"'\r\n]//g;
$val =~ s/&/&/g;
$val =~ s/</</g;
$val =~ s/>/>/g;
$val =~ s/"/"/g;
$val =~ s/'/'/g;
$val =~ s/\r\n/\t/g;
$val =~ s/\r/\t/g;
$val =~ s/\n/\t/g;
$val =~ s/−/-/g; ## ★追加
$val =~ s/〜/~/g; ## ★追加
記事No | : 9999 |
投稿日 | : 2012/01/17(Tue) 09:59:07 |
タイトル | : Re^2: Postmail(UTF-8)のメールで「〜」の文字化け |
ID情報 | : nikoban |
投稿者 | : トモ |
URL | : http://www.yes-noda.co.jp/ |
BAL様 返信ありがとうございます。
追記が遅れましたが、全角=>半角置換は 元スレッドNo.9853 を
参考に対応済みです。
できれば全角に戻してメールしたいなと思い、質問させていただきました。
記事No | : 10002 |
投稿日 | : 2012/01/17(Tue) 14:39:21 |
タイトル | : Re^3: Postmail(UTF-8)のメールで「〜」の文字化け |
ID情報 | : Fuyuki |
投稿者 | : BAL |
URL | : http://www26.tok2.com/home/sumire1100/ |
> BAL様 返信ありがとうございます。
> 追記が遅れましたが、全角=>半角置換は 元スレッドNo.9853 を
> 参考に対応済みです。
>
> できれば全角に戻してメールしたいなと思い、質問させていただきました。
こちらの過去ログのEncode.pmを使う方法に変更してください。
送信箇所だけ変更した方が修正箇所は少なくて済みます。
http://www.kent-web.com/support/bbs/?list=log&no=9862
●postmail.cgi
# モジュール実行
use strict;
use CGI::Carp qw(fatalsToBrowser);
use lib './lib';
use CGI::Minimal;
use Jcode;
use Encode; ## ★追加
#-----------------------------------------------------------
# 送信実行
#-----------------------------------------------------------
-- 省略 --
# コード変換
#$mbody = $j->set(\$mbody,'utf8')->jis; ## ★コメントアウト
$mbody = encode('jis',decode('sjis',encode('cp932',decode_utf8($mbody)))); ## ★追加
記事No | : 10005 |
投稿日 | : 2012/01/17(Tue) 17:00:09 |
タイトル | : Re^4: Postmail(UTF-8)のメールで「〜」の文字化け |
ID情報 | : nikoban |
投稿者 | : トモ |
URL | : http://www.yes-noda.co.jp/ |
> こちらの過去ログのEncode.pmを使う方法に変更してください。
> 送信箇所だけ変更した方が修正箇所は少なくて済みます。
> http://www.kent-web.com/support/bbs/?list=log&no=9862
>
> ●postmail.cgi
>
> # モジュール実行
> use strict;
> use CGI::Carp qw(fatalsToBrowser);
> use lib './lib';
> use CGI::Minimal;
> use Jcode;
> use Encode; ## ★追加
>
>
> #-----------------------------------------------------------
> # 送信実行
> #-----------------------------------------------------------
> -- 省略 --
> # コード変換
> #$mbody = $j->set(\$mbody,'utf8')->jis; ## ★コメントアウト
> $mbody = encode('jis',decode('sjis',encode('cp932',decode_utf8($mbody)))); ## ★追加
BAL様、さっそくのお返事ありがとうございます。
ご教授いただいた件、前スレッドを参考にした時はサーバのperlのバージョンが
5.6.1だったので試していなかったのですが、よく調べてみたらパスを変更することで
ver5.8.4が利用可能でした。
ご教授いただいた記述をテストしてみましたところ、文字化けもしっかり解消し、
メールの内容も「〜」全角で受信できました。
本当にありがとうございました!