「全角は2バイト」は本当? 文字数とバイト数の違いを整理します。
「全角10文字(半角20文字)以内」「100バイト以内」のように、文字数の制限は文字数で決められている場合と、バイト数で決められている場合があります。この2つの違いを知っておくと、入力フォームやシステムの「なぜか入らない」を防げます。
半角は英数字のように幅の狭い文字、全角はひらがなや漢字のように正方形に近い幅の文字です。同じ「A」でも、半角の A と全角の A は別の文字として扱われます。
カタカナには半角の アイウ と全角の アイウ があります。半角カタカナは、システムや環境によっては正しく扱えない場合があるため、入力フォームで全角への統一を求められることがよくあります。
バイト数は、文字をコンピューターに保存するときに必要なデータの大きさです。同じ文字でも、文字コード(UTF-8やShift_JISなど)によってバイト数が変わります。現在のウェブで標準的に使われているのはUTF-8です。
| 文字の例 | 種類 | UTF-8 | Shift_JIS |
|---|---|---|---|
A 1 | 半角英数字 | 1バイト | 1バイト |
ア | 半角カタカナ | 3バイト | 1バイト |
あ 漢 | ひらがな・漢字など | 3バイト | 2バイト |
😀 𠮷 | 絵文字・一部の漢字 | 4バイト | 表せない |
「全角は2バイト」という説明をよく見かけますが、これはShift_JISの場合の話です。UTF-8では日本語の多くの文字が3バイトになり、「全角10文字=20バイト」とはなりません。また、半角カタカナはShift_JISでは1バイトですが、UTF-8では3バイトです。
システムやデータベースの入力欄では、制限が文字数ではなくバイト数で決められていることがあります。たとえば「100バイトまで」の欄にUTF-8で日本語を入れると、入るのは33文字までです(100÷3=33余り1)。
改行も1文字分のデータです。モジツールでは改行を1文字(UTF-8で1バイト)として数えます。ただし、Windowsのテキストファイルなどでは改行が2文字分(CR+LF)として保存されることもあり、環境によって数え方が変わる点に注意が必要です。