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


記事No: 9853
投稿日: 2011/12/21(Wed) 10:49:10
タイトルpostmailでの全角ハイフンなどの文字化けが
ID情報: yellowho
投稿者: cake
URLhttp://www.mechany.com/toiawase/toiawase4.html

postamil Ver: 6.11 (UTF-Version)を設置させていただき、とても有効に使わせていただいております。お客様からの問い合わせ内容を見ると、全角ハイフンなどが文字化けしてしまっております。ネットで調べてみるとUTF-8における全角特定文字について、文字化けが起こってしまうとの記載がありました。過去ログに掲載されているのかもしれませんが、うまく見つけられませんでした。もし、対応できるようでしたらご教授いただきたいです。
-----------------------------
【例:送信内容の文字化け箇所(●の箇所は数字が入っていました)】
TEL = 090\x{ff0d}●●●●\x{ff0d}●●●●/053\x{ff0d}●●●\x{ff0d}●●●●
FAX = 053\x{ff0d}●●●\x{ff0d}●●●●
在庫一覧表FAX = 絽\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}
-----------------------------
お忙しいところ恐れ入ります。よろしくお願いいたします。


記事No: 9856
投稿日: 2011/12/21(Wed) 13:32:27
タイトルRe: postmailでの全角ハイフンなどの文字化けが
ID情報: hamel
投稿者: Hamel

> postamil Ver: 6.11 (UTF-Version)を設置させていただき、とても有効に使わせていただいております。お客様からの問い合わせ内容を見ると、全角ハイフンなどが文字化けしてしまっております。ネットで調べてみるとUTF-8における全角特定文字について、文字化けが起こってしまうとの記載がありました。過去ログに掲載されているのかもしれませんが、うまく見つけられませんでした。もし、対応できるようでしたらご教授いただきたいです。
> -----------------------------
> 【例:送信内容の文字化け箇所(●の箇所は数字が入っていました)】
> TEL = 090\x{ff0d}●●●●\x{ff0d}●●●●/053\x{ff0d}●●●\x{ff0d}●●●●
> FAX = 053\x{ff0d}●●●\x{ff0d}●●●●
> 在庫一覧表FAX = 絽\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}\x{fffd}
> -----------------------------
> お忙しいところ恐れ入ります。よろしくお願いいたします。

直接プログラムを改造するのではなくて、
「toiawase4.html」内の項目TEL(必須)の横に「半角で入力」と
入れるのではダメなのでしょうか?


記事No: 9860
投稿日: 2011/12/21(Wed) 15:11:30
タイトルRe^2: postmailでの全角ハイフンなどの文字化けが
ID情報: yellowho
投稿者: cake
URLhttp://www.mechany.com/toiawase/toiawase4.html

> 直接プログラムを改造するのではなくて、
> 「toiawase4.html」内の項目TEL(必須)の横に「半角で入力」と
> 入れるのではダメなのでしょうか?

お返事ありがとうございます。早速「半角で入力」と付記いたしました。勉強不足で申し訳ございませんが、プログラムの改造をして対応できるものなのでしょうか?


記事No: 9861
投稿日: 2011/12/21(Wed) 16:48:23
タイトルRe^3: postmailでの全角ハイフンなどの文字化けが
ID情報: hamel
投稿者: Hamel

> > 直接プログラムを改造するのではなくて、
> > 「toiawase4.html」内の項目TEL(必須)の横に「半角で入力」と
> > 入れるのではダメなのでしょうか?
>
> お返事ありがとうございます。早速「半角で入力」と付記いたしました。勉強不足で申し訳ございませんが、プログラムの改造をして対応できるものなのでしょうか?

直接プログラムを改造しなくても
CSS(スタイルシート)でIMEの入力モードを制限できます。
要は、特定のフィールドだけ漢字変換モードで全角入力出来ないようにしてしまえば良いのです。ですが「半角入力」という表示は残しておいたほうが良いと思います。

postmail.html内の
<style type="text/css">
<!--
から
-->
</style>
の間に

input.ex1 { ime-mode: disabled; }

を追加する

そして下にある問合せフォーム書式内にある
<input type="text" name="phone" size="35" /><br />

などとある一番後ろの所に「class="ex1"」を追加する
<input type="text" name="phone" size="35" class="ex1"/><br />


記事No: 9862
投稿日: 2011/12/21(Wed) 17:28:01
タイトルRe^3: postmailでの全角ハイフンなどの文字化けが
ID情報: teketen
投稿者: てけてん

htmlファイル側での対応は、クライアントサイドで改変出来るので、スクリプト側でも対応した方が良いですね。
postmail.cgi

# 入力チェック確認画面
if ($check) {
&err_check($match2);
}

の前の行に

# TEL,FAX書式チェック 追加■
error("TELには、半角数字と半角ハイフン以外は入力しないで下さい") if ($$in{TEL} and $$in{TEL} =~ /[^0-9\-]+/);
error("FAXには、半角数字と半角ハイフン以外は入力しないで下さい") if ($$in{FAX} and $$in{FAX} =~ /[^0-9\-]+/);

を挿入してみて下さい。
ただ、文字化けの原因が全角ハイフンだけならば、これで解決しますが、他に有る場合は解決しないかも。
Unicodeには含まれるが、jisに含まれない文字は、\x{fffd}で表現されていると思いますので。

以下、追記:2011年12月24日

スレッドは終了していますが、同じ問題を抱えている方の為に、Encode.pmを利用した方法をご紹介しておきます。
但し、5.6までは、Encode.pmが利用できない為、ご利用のサーバーのPerlのバージョンが5.8以上に限ります。
ご利用サーバーのPerlのバージョンをご確認の上、改造してください。
送信部分のみ、Encode.pmを使うことも出来ますが、取り合えず全ての文字コード変換を、Jcode.pmではなくEncode.pmを使用した方法です。
但し、機種依存文字(丸付き数字など)は、文字化けするものがあります。

postmail.cgi(utf8版)v6.11

■14行目付近 ----------------------

use Jcode;

# Jcode宣言
my $j = new Jcode;



use Encode;

■219行目付近 ----------------------

$tbody = $j->set(\$tbody,'utf8')->jis;



$tbody = encode('jis',decode_utf8($tbody));

■236行目付近 ----------------------

$resbody = $j->set(\$resbody,'utf8')->jis;



$resbody = encode('jis',decode_utf8($resbody));

■283行目付近 ----------------------

# コード変換
$mbody = $j->set(\$mbody,'utf8')->jis;



# コード変換
$mbody = encode('jis',decode('sjis',encode('cp932',decode_utf8($mbody))));

■297行目付近 ----------------------

$sub_me = $j->set($sub_me,'utf8')->mime_encode;



$sub_me = encode('MIME-Header-ISO_2022_JP',$sub_me);

■301行目付近 ----------------------

$from = $j->set("\"$$in{name}\" <$email>",'utf8')->mime_encode;



$from = encode('MIME-Header-ISO_2022_JP',"\"$$in{name}\" <$email>");

■323行目付近 ----------------------

# 件名MIMEエンコード
my $re_sub = Jcode->new($cf{sub_reply})->mime_encode;



# 件名MIMEエンコード
my $re_sub = encode('MIME-Header-ISO_2022_JP',$cf{sub_reply});

■468行目付近 ----------------------

$key = $j->set($key)->utf8;
$val = $j->set($val)->utf8;



$key = encode_utf8(decode_utf8($key));
$val = encode_utf8(decode_utf8($val));

に、それぞれ変更して下さい。
以上です。


記事No: 9863
投稿日: 2011/12/21(Wed) 19:03:21
タイトルRe: postmailでの全角ハイフンなどの文字化けが
ID情報: Fuyuki
投稿者: BAL
URLhttp://www26.tok2.com/home/sumire1100/

> postamil Ver: 6.11 (UTF-Version)を設置させていただき、とても有効に使わせていただいております。お客様からの問い合わせ内容を見ると、全角ハイフンなどが文字化けしてしまっております。

全角ハイフォンは本文中にあっても文字化けしますのでプログラム側のフォームデコードで処理した方がベターかと思います。
プログラム側で処理すれば注意書きが不要になります。

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; ## 追加


記事No: 9864
投稿日: 2011/12/21(Wed) 20:16:55
タイトルRe^2: postmailでの全角ハイフンなどの文字化けが
ID情報: yellowho
投稿者: cake
URLhttp://www.mechany.com/toiawase/toiawase4.html

> 全角ハイフォンは本文中にあっても文字化けしますのでプログラム側のフォームデコードで処理した方がベターかと思います。
> プログラム側で処理すれば注意書きが不要になります。
>
> 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; ## 追加

早速みなさまよりアドバイスをいただきまして、ありがとうございます。Hamel様・てけてん様・BAL様のご提案を試して見ます。また分からなかったら質問させていただきます。本当にありがとうございます。


記事No: 9866
投稿日: 2011/12/22(Thu) 10:38:50
タイトルRe^2: postmailでの全角ハイフンなどの文字化けが
ID情報: yellowho
投稿者: cake
URLhttp://www.mechany.com/toiawase/toiawase4.html

BAL様 アドバイスありがとうございます。

初歩的な質問で申し訳ございませんが、下記「フォームデコード」を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; ## 追加


記事No: 9867
投稿日: 2011/12/22(Thu) 11:04:25
タイトルRe^3: postmailでの全角ハイフンなどの文字化けが
ID情報: Fuyuki
投稿者: BAL
URLhttp://www26.tok2.com/home/sumire1100/

> 初歩的な質問で申し訳ございませんが、下記「フォームデコード」をpostmail.cgiに追加する場合、「ファイルのここに」という追加場所の指定はありますでしょうか?それとも特に気をつけなくてもよいでしょうか?
>
> あと、最終行の「追加」の言葉は入れないでよいでしょうか


この1行を追加するだけですが。
$val =~ s/−/-/g;

「## 追加」の文字は単なる目印ですからどちらでもかまいません。


記事No: 9870
投稿日: 2011/12/22(Thu) 22:13:56
タイトルRe^4: postmailでの全角ハイフンなどの文字化けが
ID情報: yellowho
投稿者: cake
URLhttp://www.mechany.com/toiawase/toiawase4.html

> この1行を追加するだけですが。
> $val =~ s/−/-/g;
>
> 「## 追加」の文字は単なる目印ですからどちらでもかまいません。

全くその通りでございました。よく確認しないで質問してしまい、失礼いたしました。

おかげさまでうまく表示できるようになりました。本当にありがとうございました。


記事No: 10124
投稿日: 2012/02/11(Sat) 21:58:41
タイトルpostmailでの文字化け
ID情報: 815hana
投稿者: くう
URLhttp://hanahome.info/postmail/postmail.html

postmail Ver: 6.11 (UTF-Version)を設置させていただきました。
設置URL http://hanahome.info/postmail/postmail.html

エラーチェック(http://hanahome.info/postmail/check.cgi)
で、下記のように文字化けが生じます。

また、送信確認画面がCheck Mode: [ postmail(UTF-8) v6.11 ]
Perl繝舌・繧ク繝ァ繝ウ : 5.008008
繝ュ繧ー繝輔ぃ繧、繝ォ : 繝代せOK
繝ュ繧ー繝輔ぃ繧、繝ォ : 繝代・繝溘ャ繧キ繝ァ繝ウOK
sendmail繝代せ・哢G
繝・Φ繝励Ξ繝シ繝&#65533; ( conf.html ) : 繝代せOK
繝・Φ繝励Ξ繝シ繝&#65533; ( err1.html ) : 繝代せOK
繝・Φ繝励Ξ繝シ繝&#65533; ( err2.html ) : 繝代せOK
繝・Φ繝励Ξ繝シ繝&#65533; ( thx.html ) : 繝代せOK
繝・Φ繝励Ξ繝シ繝&#65533; ( mail.txt ) : 繝代せOK
繝・Φ繝励Ξ繝シ繝&#65533; ( reply.txt ) : 繝代せOK

すべてのファイルを「public_html」の下層の「postmail」フォルダにUPしているのですが、送信確認画面が「404 File Not Found」になります。

init.cgiファイルの変更箇所は下記の部分のみです。

# sendmailのパス【サーバパス】
# → プロバイダの指定を確認のこと
$cf{sendmail} = '/usr/bin/sendmail';

# 文字コード自動判別(0=no 1=yes)
# → フォームの文字コード判別を行う場合
# → フォームがShift_JISの場合は「0」で概ねOK
$cf{conv_code} = 1;

どう対処すればよいか、どうかお教えください。



記事No: 10138
投稿日: 2012/02/16(Thu) 08:38:37
タイトル警告
ID情報: kent
投稿者: KENT

> postmail Ver: 6.11 (UTF-Version)を設置させていただきました。
> 設置URL http://hanahome.info/postmail/postmail.html
>
> エラーチェック(http://hanahome.info/postmail/check.cgi)
> で、下記のように文字化けが生じます。

新たに質問をするときは、スレッドを立ててください。


[検索ページ] [掲示板]