dポイントプレゼントキャンペーン実施中!

会員のログイン等で、氏名(漢字)と生年月日でログインするように
してあるのですが、「眞」や「はしご高」などの文字が、
フォームで渡ってきた場合に、
データと一致しなくエラーとなってしまいます。

if (!open(IN,"$file")) { &error('データベースエラー','.'); }
@BASE = <IN>;
$all = @BASE;
close(IN);

if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; }
$TO = $FF + $page - 1;
if ($TO > $#BASE) { $TO = $#BASE; }
$hit = 0;
$next_num = '';

foreach $num ($FF .. $#BASE) {
$data = $data2 = $BASE[$num];
&jcode'convert(*data,'euc');
($d,$NO,$REM,$DATE,$NAME,$EMAIL,$PMAIL,$AGE,$SEX,$PREF) = split(/\,/,$data);


# 名前(一致)
if ($NAME5 ne 'dadada') {
if ($NAME eq $FORM{'NAME'} ) { ; } else { next; }
}

# 生年月日(一致)
if ($AGE5 ne 'kakak') {
if ($AGE eq $FORM{'AGE'} ) { ; } else { next; }
}

# 検索終了処理
if ($hit == $page) { $next_num = $num; last; }
else { push(@NEW,$data2); $hit++; }
}

と検索の部分はなっております。
エラーが出る漢字は少ないのですが、
ログインできないお客様がいて困っています。
なにか対処方法はございますでしょうか?
何卒、宜しくお願い致します。

A 回答 (2件)

EUC にない文字を使ってるとか, そういうことはないですよね?


あと, 揺らぎなく完全に一致しなければならないので元のデータベースに入っているデータはチェックしてますか?
    • good
    • 0

&jcode'convert(*data,'euc');


でEUCにしているようですが、文字コードが自動判別できないときにエラーになるのだと思います。
&jcode'convert(*data, 'euc' ,'sjis');
などと、明示的に指定してはどうでしょう?

というか、いまだにjcode.pl使ってるとか、
&jcode'convertなどというPerl4の記述とか、(Perl5なら&jcode::convert)
ツッコミ所が多いのでEncode.pmを使うか、せめてJcode.pmを使った方がいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!