• 締切済み

一致する文字としない文字があるのですが

会員のログイン等で、氏名(漢字)と生年月日でログインするように してあるのですが、「眞」や「はしご高」などの文字が、 フォームで渡ってきた場合に、 データと一致しなくエラーとなってしまいます。 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++; } } と検索の部分はなっております。 エラーが出る漢字は少ないのですが、 ログインできないお客様がいて困っています。 なにか対処方法はございますでしょうか? 何卒、宜しくお願い致します。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

EUC にない文字を使ってるとか, そういうことはないですよね? あと, 揺らぎなく完全に一致しなければならないので元のデータベースに入っているデータはチェックしてますか?

すると、全ての回答が全文表示されます。
  • uwi
  • ベストアンサー率74% (55/74)
回答No.1

&jcode'convert(*data,'euc'); でEUCにしているようですが、文字コードが自動判別できないときにエラーになるのだと思います。 &jcode'convert(*data, 'euc' ,'sjis'); などと、明示的に指定してはどうでしょう? というか、いまだにjcode.pl使ってるとか、 &jcode'convertなどというPerl4の記述とか、(Perl5なら&jcode::convert) ツッコミ所が多いのでEncode.pmを使うか、せめてJcode.pmを使った方がいいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A