• ベストアンサー

文字列の長さの数え方

input type=textに入力された文字の長さを 数えたいと思います。 入力には、全角も半角もOkにしたいのですが、 DB(oracle)に登録する為、バイト数のチェックを したいのですが、lengthだけではうまくチェックしきれません。 入力された内容の文字数、バイト数のチェックする方法を 教えて下さい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • me_no_car
  • ベストアンサー率24% (22/90)
回答No.1

IEの場合、escape関数というUnicodeを返す関数があるので Unicodeを見て全角か半角であるかを判別できます。 ネスケの場合確かASCIIコードの16進数表示で帰ってくるので 注意する必要があります。

y-kawamura
質問者

お礼

早速回答ありがとうございます。 いきなり2件も回答いただけるなんて・・・ 頑張って試してみます。

その他の回答 (1)

  • nipotan
  • ベストアンサー率59% (134/227)
回答No.2

JavaScript の length は、マルチバイト文字を 1 文字とカウントしちゃうんで、こういう場合はキツイですよね。 私が普段常用している関数は以下のようなものです。 よかったらお試しください。 --- function string_length(str) { var length = 0; str = escape(str); var i = 0; for(; i < str.length; i++){ if(str.charAt(i) == '%'){ // UNICODE 対応 (IE) if(str.charAt(i + 1) == 'u'){ i += 4; length++; }else{ // IE 以外の場合 i++; } i++; } length++; } return length; } --- ためしに、 var length = string_length('文字列'); とやれば、length には、6 が入ります。 もちろん、string_length に渡す文字はフォームの値でも OK です。 ex) var length = string_length(document.form.text.value); これは escape() でマルチバイト文字の判別を行っています。 escape() を使った際に UNICODE で返すブラウザ (IE) に対応もしているので、IE 及び NN で動作確認済みです。 注意点としては Oracle に insert する文字コードと、ブラウザウィンドウ (上記 js を使用する HTML) を同じ文字コードにしないと、一部の文字コード (例えば半角カナ) 等を、実際に Oracle に入れる時に、長さを誤って判定してしまいますので、お気をつけ下さい。

y-kawamura
質問者

お礼

回答ありがとうございました。 VBとかだとコマンドがあるんですけどねぇ。 やっぱりコマンド一つではいかないのでね。 関数の方ありがとうございます。早速試してみます。

関連するQ&A