人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: dai1977
●カテゴリ:ウェブ制作
✍キーワード:HTML JavaScript 文字コード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● susie-t
●35ポイント

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

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

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 オブジェクトにコードを補完すれば機能すると思います。(大変かもしれませんが・・・。あと、容量的に厳しいですかね^^;)

◎質問者からの返答

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


2 ● susie-t
●35ポイント

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


3 ● ardarim
●10ポイント

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


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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ