投稿されたメッセージに日本語が含まれているかを調べ、含まれていなければ拒否するという方法は、スパム対策で役に立ちます。ここでは、指定された文字列に日本語が含まれるか調べる方法を紹介します。†Jcode.plまたはJcode.pmのgetcodeを使用して文字コードを調べることができます。日本語の場合は結果として、"ascii"、"binary"以外を返しますが、日本語であっても無くてもundefを返す可能性があります。JISかどうか確かめる例を示します。'SJISではありません。†Jcodeのgetcodeは結構重いので、ひらがなやカタカナが含まれているかだけ調べたほうが簡単です。JISのときに、ひらがなやカタカナが含まれているか調べています。'ひらがなもカタカナも含まれていません。exit;}上記の例では、ひらがなでは、「ぁ」から「ん」までの間にある文字が含まれているかを調べています。カタカナでは、「ァ」から「ヶ」です。半角カタカナは含みません。詳しくは、文字コード表をご覧ください。EUCの場合は、正規表現パターンを以下のように変更します。\xA5[\xA1-\xF6]私の経験では、このようにしても、日本語以外の言語(何語だかは分からないが)が許可されてしまうことがあります。カタカナを許可するとその確率が上がるため、ひらがなが含まれているかだけを調べたほうがよさそうです。†mb_detect_encodingを使用して、文字コードを判別することができます。mb_detect_encodingが"ASCII"を返した時は日本語ではないと判断します。exit('日本語ではありません。†これは、Perlで紹介した方法と同じです。mb_eregやmb_ereg_matchが使えるのであれば、次のようにできます。exit('ひらがなもカタカナも含まれません。');}もしこれらが使えないのであれば、Perlの例と同じように、eregやpreg_matchを使用します。exit('ひらがなもカタカナも含まれません。†ASP.NETでも、PerlやPHPと基本的には同じ方法でできます。"ひらがなもカタカナも含まれていません。"ひらがなもカタカナも含まれていません。return;}.NETではさらにUnicodeのブロック名を使用することもできます。ブロック名を使用した場合は、上記の方法(ひらがなは[ぁ-ん]で、カタカナは[ァ-ヶ]の範囲)よりも、ひらがな、カタカナの範囲が広がります。範囲が広がることによりひらがな、カタカナと判断されるようになる文字は、めったに使われることがない文字ばかりなので、上記のような方法で問題ないです(範囲が広がりすぎるのもよくありませんので)。"ひらがなもカタカナも含まれていません。"ひらがなもカタカナも含まれていません。