全角と半角の違いと文字数の数え方
「半角2文字=全角1文字」で換算する場面と、バイト数との違い
「全角30文字以内」と言われて入力したのに、フォームが受け付けてくれない。あるいは「半角2文字は全角1文字として数える」と書かれているが、どう計算すればいいのか分からない。ここを整理します。
そもそも何が違うのか
全角と半角の違いは、もとをたどれば表示される幅です。等幅フォントで並べると、全角は半角のちょうど2倍の幅を占めます。
基本は、どちらも1文字
ほとんどの場面で、全角も半角も同じ1文字として数えます。「あ」も「a」も1文字です。当サイトの文字数カウントもこの基準で数えています。
幅が2倍だからといって、全角を2文字と数えることは通常ありません。幅と文字数は別の話です。
「半角2文字=全角1文字」で換算する場面
例外的に、幅を基準に換算する指定があります。これは見た目の分量をそろえたい場面で使われます。
| 場面 | 理由 |
|---|---|
| 原稿用紙の横書き | 1マスの幅が決まっているため。半角2文字で1マスに収めます |
| 一部の応募・提出規定 | ページに収まる分量をそろえるため |
| 印刷物のレイアウト | 行の長さを揃える必要があるため |
換算の計算はこうなります。
たとえば全角20文字と半角10文字の混在なら、20 + (10 ÷ 2) = 25文字ぶんです。 半角が奇数個のときは切り上げて計算しておくと、超過しません。
指定に「全角換算」「全角に換算して」と書かれていなければ、この計算は不要です。単純に1文字ずつ数えてください。
バイト数はまた別の話
古いシステムやデータベースの制限では、文字数ではなくバイト数で上限が決まっていることがあります。これは文字数とも幅とも違う、3つ目の数え方です。
| 文字 | 文字数 | 幅(全角換算) | バイト数(UTF-8) |
|---|---|---|---|
| a | 1 | 0.5 | 1 |
| あ | 1 | 1 | 3 |
| 漢 | 1 | 1 | 3 |
| 🐈(絵文字) | 1 | 1 | 4 |
「255バイトまで」といった制限に日本語を入れると、実際には85文字ほどしか入りません。文字数の感覚で入力するとオーバーします。バイト数の制限が書かれている場合は、日本語1文字=3バイトで見積もってください。
フォームで文字数がオーバーするとき
「30文字以内のはずなのに弾かれる」場合、次のどれかが原因です。
- 改行が数えられている:入力欄によっては改行も1文字として消費します。改行1つで1〜2文字ぶん減ります
- 末尾に空白が入っている:コピー&ペーストで、見えない空白が付いてくることがあります
- バイト数で制限されている:上記のとおり、日本語だと文字数の3倍を消費します
- 絵文字が複数文字として数えられている:見た目は1文字でも、内部的には複数の符号で構成される絵文字があります
原因が分からないときは、いったんすべて半角英数字だけで入力してみると切り分けられます。それで通るなら、日本語の扱い(バイト数や全角換算)が原因です。
半角カタカナについて
「アイウエオ」のような半角カタカナは、文字数としては1文字ずつですが、使用を避けるのが無難です。
- 環境によって文字化けすることがあります
- 濁点が別の1文字として数えられる場合があります(「ガ」は2文字扱い)
- ビジネス文書では使わないのが通例です
「ガ」が2文字と数えられる点は特に注意が必要です。半角カタカナで濁点・半濁点を多用すると、想定より文字数が増えます。
よくある質問
全角スペースと半角スペースは同じですか
別の文字です。どちらも1文字として数えますが、幅もバイト数も違います。全角スペース(U+3000)は日本語の文章で段落の頭を下げるときに使われ、半角スペース(U+0020)は英文の単語の区切りに使われます。当サイトのカウンターは全角スペースの数を内訳に表示しています。
「全角のみ」と指定されたらどうすればいいですか
数字やアルファベットも全角で入力する必要があります。「2026」のように全角の数字を使ってください。日本語入力の状態で数字を打ち、変換候補から全角を選ぶと入力できます。
どちらで書くべきか迷います
日本語の文章の中では、数字とアルファベットは半角が現在の主流です。全角の英数字は文中で幅が広く読みにくいためです。ただし提出先に指定がある場合はそちらに従ってください。