【HTML】JAVAScriptで第二水準外の文字コードをチェックするにはどうしたらいいのでしょうか?

よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2006/07/21 21:15:59
  • 終了:2006/07/28 21:20:03

回答(3件)

id:susie-t No.1

susie-t回答回数99ベストアンサー獲得回数182006/07/22 04:54:46

ポイント35pt

私の知る限りですが、結局、コード一覧を作るのが一番早い気がします。(承知の上でご質問されているのかもしれませんが^^;)

文字コードは以下で取れます。

var char = "弌”
var code = char.charCodeAt(0).toString(16);

これでcodeには "5f0c" が入ります。ただし、これはUnicodeなのでJISのように範囲チェックで判定できません。UnicodeをJIS等に変換するためには対応表が必要となります。となると、変換するよりは該当のUnicode一覧を作って調べるほうが早いです。

例を示します。

<html>
<head>
<title></title>
<script>
<!--
function checkStd(str){
  if(str.length == 0){
    alert("empty");
    return;
  }
  for(var i = 0; i < str.length; i++){
    var code = str.charCodeAt(i).toString(16);
    if(!codes[code]){
      alert("error:char=" + str.charAt(i) + ",code=" + code);
      return;
    }
  }
  alert("ok");
}
var codes = 
{ "5f0c" : true //弌
, "4e10" : true //丐
, "4e15" : true //丕
, "4e2a" : true //个
, "4e31" : true //丱
}
//-->
</script>
</head>
<body>
<form onsubmit="return false;">
<input type="text" name="str"/><button onclick="checkStd(this.form.str.value);">check</button>
</form>
</body>
</html>

「弌」「丐」「丕」「个」「丱」以外の文字が入力されるとエラーとなります。codeは小文字になるので注意してください。codes オブジェクトにコードを補完すれば機能すると思います。(大変かもしれませんが・・・。あと、容量的に厳しいですかね^^;)

id:dai1977

ご回答ありがとうございます。

2006/07/24 09:04:03
id:susie-t No.2

susie-t回答回数99ベストアンサー獲得回数182006/07/22 05:19:59

ポイント35pt

すみません、#1の回答ですが、だったら該当文字全部の文字列を作ってindexOfで調べればいいですね・・・。文字コードにとらわれて無駄なことをしてしまいました。失礼しました。

id:ardarim No.3

ardarim回答回数897ベストアンサー獲得回数1452006/07/28 04:49:52

ポイント10pt

UnicodeからJISコードに変換して、変換エラーかどうかで判断するのが良いかと思います。


Unicode/JISの変換ライブラリはいろいろ公開されているようですので組み込んで使えると思います。

Unicode と JIS / EUC / シフトJIS 間の変換

Shift_JISエンコードやEUC-JPエンコードなども可能な escape エンコード・デコード関数のライブラリ

  • id:susie-t
    第二水準漢字は[弌-熙]という正規表現で検出できるようです。
    (第一水準漢字は[亜-腕])

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません