• ベストアンサー

文字列の長さの数え方

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

  • 入力された文字列のバイト数を知りたい。

    こんにちは。 いまWebページ上のテキストボックスに入力されたテキスト文字列のバイト長を判定しようとして, 下記のようなコーディングをしました。 ~ n = escape(document.forms(0).txtProjectCode.value); if (!(n.length == 5)) ~ ところが上記のコーディングだと半角文字は正しくバイト長が取れるのですが,全角文字が入力されると正しくバイト長が取れません。 そうすれば全角文字が入力されても正しくバイト長が取れるでしょうか? 教えてください。よろしくお願いします。

  • テキストBOXの入力制限について

    テキストBOXを下記のように設定したとします。 <input type="text"name="***" maxlength="30"> この場合は、全角・半角関係なく文字数を30文字入力することができますよね? 今回、私がやりたいことは、バイト数の制限をやりたいんです。 例えばバイト数を30バイトにした場合は、 全角では15文字しか入力できなくて 半角では30文字入力制限をする方法を探しています。 何かよい方法はないものでしょうか???

  • TETXの入力制限について色々と…

    <input type=text~~~~~~>で作ったテキストに160byte(全角80文字)までしか入力できない制限をつけたい。 <input type=text~~~~~~>で作ったテキストに半角数字(又は英数)しか入れられないようにするタグとかないでしょうかね?? こっちは半角電話番号を入力してもらいたいのです。 どなたかご存知の方おりましたからお願いします。

    • ベストアンサー
    • HTML
  • 文字列の取得について

    Accessのモジュールを使ってある文字列から指定した文字数の文字列を取得しようとしています。 A:"あああああ" & vbcrlf B:"いいいいい" & vbcrlf C:"うううううう" & vbcrlf D:"えええええ" & vbcrlf A~Dまでフィールドがあり、vbcrlfは改行です。 この文字列に対して以下の処理を実行します。 (1)変数mojiにA & B & C & Dを代入 (2)mojiを全角に変換 (3)Left(moji,20)で左から20文字取得します。 (4)mojiをテキストボックスに登録します。 (5)入力チェック処理  ・フィールドサイズが20文字以内か?  ・全角で登録されているか? →登録後のイメージ ---------------- あああああ いいいいい ううううう ---------------- テキストボックスには全角でしっかり登録されているようにみえるのですが、 どうしても全角で登録してくださいというメッセージが表示されてしまいます。 うううううの次の改行を削除すると、メッセージはでなくなります。 この改行が半角になっているのでしょうか? アドバイスよろしくお願いいたします。

  • 全角、半角文字の判別について

    フォームのテキストで全角なら10文字まで、半角なら20文字まで入力できるようにしたいのですが、EUCの場合、半角カナは2バイトになるため、バイト数で制限をかけるとうまくいきません。かといって文字数で制限をかけてもうまくいきません。 何かいい方法はあるでしょうか?

    • ベストアンサー
    • PHP
  • Javaで、半角カナを2バイトとしてカウントしたい

    JavaでSJISで入力された文字列(全角、半角、英字、記号等混在)の桁数チェックで、 入力された半角カナのバイト数を、2バイトとみなしてカウントしたいと考えています。 例えば  全角の"テスト"の場合、バイト数は6  半角の"テスト"の場合も、バイト数は6 Javaで以下の様にコーディングしたところ、半角カナ部分はとりあえずうまく行ったのですが、 System.out.println 半角の"テスト".getBytes("EUC-JP").length; ->6 特殊な文字「まるの1、まるの2」等で試すと、特殊な文字のバイト数が1バイトとして カウントされてしまいます。 ※まるの1、まるの2は、この質問フォームで入力できないのでこの記載としています。 以降は(1),(2)と記載します。いずれも全角1文字の文字のことです。 System.out.println "(1)".getBytes("EUC-JP").length;   ->1      ※希望結果は2バイト System.out.println "(2)スト".getBytes("EUC-JP").length;   ->5      ※希望結果は6バイト 特殊な文字「(1)、(2)」や半角カナ(2バイトとしてカウント)を含めて、 簡単にバイト数をカウントすることはできないでしょうか。

  • 半角文字と全角文字の判別の仕方

    MFCです。 テキストファイルから読み込んだ文字を一定の文字数づつウィンドウに書き込もうとしています。 例えば10文字を一行として 10文字 10文字 10文字 ・ ・ ・ という感じで表示したいのですが、テキストファイルには半角文字と全角文字が混じっています。半角だけなら10バイトごとに表示すればいいと思いますが、半角も全角も一文字としてカウントしようとすると半角か全角かを判別してからカウントしなければならないと思うのですが、何か良い方法ありませんか? よろしくお願いします。

  • 全て全角文字かチェックしたい

    PHP Version 5.1.6を使っています。 UTF-8だと全角文字が3バイトとして扱われるので、 半角文字のチェックのままだと3倍の文字制限が必要になってしまいます。 例: [名前] 最大全角10文字まで 半角を入力した場合:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 全角を入力した場合:あああああアア亜亜亜 半角文字だと3倍の30文字まで入力できてしまうので、 なんとかして全角文字だけ入力したかチェックする正規表現が知りたいです。

    • ベストアンサー
    • PHP
  • テキストエリア入力文字数の表示で全角と半角を区別したいです。

    JavaScriptで以下のようにテキストエリアで入力文字数を表示させているのですが、 全角文字も半角文字も同じ1文字としてカウントされてしまいます。 入力された文字が全角なら2、半角なら1としてカウントするように出来ないでしょうか? ================================================================ /*テキスト入力フォームで文字数を表示する*/ function ShowLength( str ) { document.getElementById("inputlength").innerHTML = str.length + "文字"; } ---------------------------------------------------------------- <textarea cols="70" rows="10" onkeyup="ShowLength(value);" /></textarea> <p id="inputlength">0文字</p> ================================================================ 宜しくお願い致します。

  • エスケープ文字を登録するには?

    VB.NetよりMySQLのDBへ登録処理を行おうとしています。 画面側で全角文字と半角エンマークを入力された時の 登録結果は、半角エンマークを入れたことにより文字化け が発生してしまいます。 全角文字のみの場合は文字化けもおきません。 どのようにしたら文字化けをおこさずに、半角エンマーク (エスケープ文字)を登録することができるのでしょうか?

    • ベストアンサー
    • MySQL

専門家に質問してみよう