• 締切済み

外字のチェック

アンケートのCGIを作製しています。 それで、送信のボタンを押したときに、 入力欄に外字及び半角カナが入っていたらエラーのalertを出すといったものをするにはどうすればよいでしょうか?(どうするのがスマートでしょうか?) サンプル等教えていただけるとありがたいです。 なお、 ・未入力の場合alertあげる方法は実装しています。 ・画面の文字コードはSJISです。

みんなの回答

  • hazenoki
  • ベストアンサー率33% (21/62)
回答No.3

再び回答です。 全角文字をチェックする手法を流用すればできると思ったのですが。。。 いったん、ユニコードからSJISに変換してから、チェックする手法も考えられます。 (前提として、外字かそうでないかのチェックを JIS X 0208 の区で行うと想定しています。使用するOSや業界によって外字の定義も変わってくるので注意が必要です。) そうすると、許容する文字の文字コードを大量に持つ必要はなくなります。 ただ、ユニコードからSJISへの変換方法がスマートでなくなるんですが。。。。 方法は、下記の私の質問を参考にしてください。 かなりトリッキーです。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=194676
ron3
質問者

お礼

補足回答ありがとうございます。 ちょっと方法の書いてあるページ読みました。トリッキーですね~。(笑 共通の外部ファイルにチェック関数を出して...という方法を考えると、ちとつらいっすね。 方法として、スマートな方法あきらめました。力技でいきます。 丁寧な御回答ありがとうございました。

  • hazenoki
  • ベストアンサー率33% (21/62)
回答No.2

IEの最近のバージョンのものは画面の文字コードに関わらず、内部コードはユニコードを使っています。 ですので、あまりスマートな方法は思い浮かびません。 一応、以下のページでサンプルを発見したので参考にしてみては? http://member.nifty.ne.jp/marsh/misya/java/lib_form.html

ron3
質問者

お礼

ご回答ありがとうございます。 > IEの最近のバージョンのものは画面の文字コードに関わらず、内部コードはユニコードを使っています。 やっぱりそうなんですね。。。 環境として、IE6で動くという前提なので、ユニコードになります。 このサンプルのページを見たんですが、やはり半角カナのチェックでおわっているようですね。。。 該当する分の文字のコードをすべて持たせて... というのが確実といえば確実なんですね...。

  • you111111
  • ベストアンサー率45% (20/44)
回答No.1

半角カナ文字のチェックなら、以下でできるかと。 var strTarget = frm1.txt1.value; for(var i=0; i < strTarget.length; i++) { var strBuff = escape(strTarget.charAt(i)); //IE if(navigator.appName.indexOf("Internet Explorer") && strBuff.length == 6 && strBuff.indexOf("%uFF") != -1) { alert("半角カナ文字あり!"); } //NN else if(navigator.appName.indexOf("Netscape") && dore.length==3 && dore.indexOf("%")!=-1) { alert("半角カナ文字あり!"); } }

ron3
質問者

お礼

ご回答ありがとうございます。 半角カナはこれでばっちりです。 が、やっぱり外字判定は難しいんですね... CGI側でやったほうがいいんでしょうか...。