民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS maxlength は何の長さ?

<<   作成日時 : 2009/02/13 09:27   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 15 / トラックバック 0 / コメント 0

HTMLを書いていて、INPUT タグの maxlength 属性について、これまで深く考えていなかったことに気づいた。
テキスト入力欄に入力できる文字数を制限するための属性値。
しかしこれ、MSDN の説明を読んでも分かるようにというか、よく分からないようにというか、細かいことを考えると使い方の難しい属性だ。

あちこちの WEBページで maxlength の解説はされているのだが、その文字数というのが、文字通り「文字の数」なのか、プログラマが気にする「バイト数」なのか、判然としないのである。
HTML4の仕様書にも、「the maximum number of characters」という表現にしかなっていない。マルチバイト文字の扱いが微妙だ。
で、Google 先生にお伺いをたてたところ、http://standards.mitsue.co.jp/archives/001335.html というページが見つかった。どうも「文字の数」が正解のようなのだが、かつての Netscape Navigator はバイト数で数えていたりもしたらしい。

そんなもん、Google で調べる前に自分でテストすれば早いじゃないかと後から気づき、手元の Firefox で確認したところ、Firefox でも「文字の数」でカウントしていることが分かった。3文字で制限すると、「あああ」は入力できても「ああああ」は入力できなかった(ちなみに UTF-8 を使うと、バイト数では「あああ」は9バイトとなる)。

いずれにせよ、ブラウザによって解釈の違いがありうるというのはちょっと怖い。
日本人の名前を入力させるのに8文字もあれば十分だろうというので「maxlength="8"」とかやった場合、ブラウザによっては8バイトと解釈され実質2文字しか入力できなくなったりしたら、その HTML はまったく使い物にならなくなってしまう。
maxlength は、どうも安易に使える属性ではないらしい。

ついでに、maxlength を超える文字数が入力されることもありうるというのだからさらに難しい。
JavaScript などで値をセットしたりする場合には、maxlength の制限は適用されないのだそうだ(未実験)。
もっとも、他にもさまざまな抜け道があるのだから、maxlength 属性を指定したからといって、入力値の長さが maxlength 値以下だという前提で CGI などを作成することはないので、これはそれほど大きな問題ではないはずなのだが。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 15
なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
かわいい かわいい かわいい
驚いた 驚いた
面白い 面白い
ガッツ(がんばれ!) ガッツ(がんばれ!)
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
maxlength は何の長さ? 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる