KENT-WEB サポートコーナー 過去ログ [ 0219 ]


記事No: 9995
投稿日: 2012/01/17(Tue) 09:11:37
タイトルPostmail(UTF-8)のメールで「〜」の文字化け
ID情報: nikoban
投稿者: トモ
URLhttp://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
投稿者: トモ
URLhttp://www.yes-noda.co.jp/

> スレッド No.9853 で全角ハイフンの文字化けのお話がありましたが、

全角=>半角の変換は上記スレッドを参考にできますが、
できれば全角で表示したいための質問です、よろしくお願いします。


記事No: 9998
投稿日: 2012/01/17(Tue) 09:51:27
タイトルRe: Postmail(UTF-8)のメールで「〜」の文字化け
ID情報: Fuyuki
投稿者: BAL
URLhttp://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/&/&amp;/g;
$val =~ s/</&lt;/g;
$val =~ s/>/&gt;/g;
$val =~ s/"/&quot;/g;
$val =~ s/'/&#39;/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
投稿者: トモ
URLhttp://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
URLhttp://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
投稿者: トモ
URLhttp://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が利用可能でした。

ご教授いただいた記述をテストしてみましたところ、文字化けもしっかり解消し、
メールの内容も「〜」全角で受信できました。
本当にありがとうございました!


[検索ページ]