文字数の数え方|スペース・改行・全角半角・絵文字の扱いを解説
文字数は、ふつう「目に見える文字を1つずつ数えた数」です。全角か半角かは関係なく、「あ」も「A」も1文字と数えます。ただし、スペースや改行を含めるかどうかは数える人やツールによって違います。絵文字やバイト数が絡むと、同じ文章でも結果が変わることがあります。
作文の「800字以内」、エントリーシートの入力欄、SNSの投稿欄では、それぞれ数え方のルールが少しずつ違います。この記事では、文字数・単語数・バイト数の違いを整理したうえで、スペース・改行・全角半角・絵文字の扱いを具体例で説明します。
あわせて、原稿用紙(400字詰め)に換算するときの考え方も紹介します。入力欄の上限ぎりぎりで「数えたら足りるはずなのに入らない」と困ったときにも参考にしてください。
文字数・単語数・バイト数の違い
「長さ」を表す数え方は、主に3つあります。どれを求められているかで答えが大きく変わるので、まずここを区別しておきましょう。
| 数え方 | 何を数えるか | 主に使われる場面 |
|---|---|---|
| 文字数 | 文字1つを1と数える | 作文、レポート、日本語の入力欄 |
| 単語数 | 空白などで区切られた語の数 | 英語のエッセイ、英文の原稿 |
| バイト数 | データとしての容量 | システムの入力制限、ファイルサイズ |
単語数は日本語ではあまり使われない
英語は単語の間にスペースを入れるので、「スペースで区切られたかたまり」を数えれば単語数になります。日本語は単語を区切らずに書くため、単語数を機械的に決めにくく、ソフトによって数え方がまちまちです。日本語の文章で長さを指定するときは、基本的に文字数が使われます。
バイト数は「文字コード」で変わる
コンピューターは文字を数値に置き換えて保存しています。この対応表を文字コードといい、日本でよく使われるのはUTF-8とShift_JISです。同じ「あ」でも、UTF-8では3バイト、Shift_JISでは2バイトになります。「全角は2バイト、半角は1バイト」という覚え方は、Shift_JISを前提にした古いルールだと考えてください。
スペースと改行は文字数に含める?
スペースや改行を数えるかどうかに、全体で決まったルールはありません。そのため、多くの文字数カウントツールは「空白込み」と「空白除く」の両方を表示します。
- 作文・小論文:原稿用紙を前提にしていることが多く、段落頭の1字下げなどは「マス」として扱われます
- Webの入力フォーム:入力した文字をそのまま数えるので、スペースや改行が上限にカウントされる場合があります
- 文章作成ソフト:スペースを含む文字数・含まない文字数を分けて表示するものがあります
指定に「スペースを含む」「改行を含まない」などと書かれていなければ、提出先に確認するか、多めに出る方(スペースを含めた数)でも上限内に収まるようにしておくと安心です。
半角スペースと全角スペース
半角スペースも全角スペースも、文字数ではどちらも1文字です。違いが出るのはバイト数で、UTF-8では半角スペースが1バイト、全角スペースが3バイトになります。段落の頭を全角スペースで下げていると、気づかないうちに文字数が増えているので注意しましょう。
改行は1文字か2文字か
改行は画面上では見えませんが、データとしては「改行コード」という文字が入っています。WindowsではCR+LFの2文字、macOSやLinuxではLFの1文字で改行を表すのが一般的です。
このため、同じ文章でもツールによって改行が1文字にも2文字にも数えられます。さらに、Webフォームが送信時に改行コードを変換することもあります。10行(改行9つ)の文章なら、LFかCR+LFかで9文字、改行を数えない場合と比べると最大18文字の差が出ます。上限ぎりぎりで改行を多く使う場合は、余裕を持たせておくのが安全です。
全角と半角は文字数で区別される?
一般的な文字数カウントでは、全角も半角も1文字です。「ABC」は3文字、「ABC」も3文字です。
ただし、例外になる場面がいくつかあります。
- 全角換算:入力欄によっては「全角○文字(半角は2文字で全角1文字分)」という指定があります。この場合、半角英数字20文字は全角10文字分です
- SNSの重み付け:サービスによっては、日本語などの文字を英数字より重く数える仕組みを採用していることがあります
- バイト数による制限:システムがバイト数で上限を管理していると、日本語は英数字の2〜3倍の枠を使います
半角カタカナ(アイウ)は特に注意が必要です。Shift_JISでは1バイトですが、UTF-8では3バイトになります。また、システムによっては使えない文字として扱われることがあるため、提出物では全角カタカナを使う方が無難です。
Excelでは、LEN関数で文字数、LENB関数でバイト数を求められます。LENBの結果は言語設定によって変わり、日本語環境では全角文字が2として数えられます。
同じ文章でも数え方で結果が変わる例
次の2行の文章(1行目と2行目の間に改行が1つ)を、いろいろな方法で数えてみます。
明日は晴れ。 Let's go 😀
まず中身を分けます。
- 1行目:「明日は晴れ。」は全角6文字です
- 改行:1つ(LFなら1文字、CR+LFなら2文字)
- 2行目:「Let's」5文字+スペース1+「go」2文字+スペース1+絵文字1つ=見た目で10文字です。このうち半角文字は9文字です
これをもとに計算すると、次のようになります。
| 数え方 | 計算 | 結果 |
|---|---|---|
| 見た目の文字数(空白・改行込み、改行はLF) | 6+1+10 | 17 |
| 空白込み・改行除く | 6+10 | 16 |
| 空白・改行除く | 6+8 | 14 |
| JavaScriptのlength(改行はLF) | 6+1+9+2 | 18 |
| UTF-8のバイト数(改行はLF) | 6×3+1+9×1+4 | 32 |
| Shift_JISのバイト数(絵文字を除く) | 6×2+1+9×1 | 22 |
同じ文章なのに、14から32まで差があります。改行をCR+LFで数えると、改行を含めて数える方法(17・18・32・22)はそれぞれ1ずつ増えます。改行を除く16と14は変わりません。なお、標準的なShift_JISには絵文字が含まれていないため、Shift_JISで保存するシステムでは絵文字そのものを入力できないことがあります。
空白込み・除くの文字数とバイト数をまとめて確認したいときは、文字数カウントに貼り付けると比較しやすくなります。
絵文字が2文字以上に数えられる理由
絵文字を1つ入れただけで「2文字」「4文字」と数えられることがあります。これはツールの不具合ではなく、文字の内部的な表し方が原因です。
UTF-16とサロゲートペア
Unicode(世界中の文字に番号を割り当てた規格)では、文字ごとに「コードポイント」という番号が決まっています。😀はU+1F600です。
JavaScriptやWindowsの内部などで使われるUTF-16という方式は、16ビット(2バイト)単位で文字を表します。16ビットで表せる番号はU+FFFFまでなので、それより大きい番号の文字は16ビットを2つ組み合わせて表します。この組み合わせを「サロゲートペア」と呼びます。
😀の場合は次のように計算されます。
- 0x1F600から0x10000を引くと0xF600
- 上位10ビット(0xF600を0x400で割った商0x3D)に0xD800を足して0xD83D
- 下位10ビット(0xF600を0x400で割った余り0x200)に0xDC00を足して0xDE00
- 結果として😀は「D83D DE00」の2単位になる
JavaScriptの文字列の長さ(length)はこの単位を数えるので、😀は2になります。詳しくはMDNのString.lengthの解説にも説明があります。
結合文字とZWJで1つに見える絵文字
見た目は1つでも、複数の文字を組み合わせてできている絵文字もあります。
| 絵文字 | 中身 | コードポイント数 | UTF-16の単位数 | UTF-8のバイト数 |
|---|---|---|---|---|
| 😀 | 絵文字1つ | 1 | 2 | 4 |
| ❤️ | ハート+異体字セレクタ | 2 | 2 | 6 |
| 👍🏻 | 親指+肌の色の指定 | 2 | 4 | 8 |
| 🇯🇵 | 地域指示記号2つ | 2 | 4 | 8 |
| 👨👩👧 | 人物3つ+ZWJ2つ | 5 | 8 | 18 |
ZWJ(ゼロ幅接合子)は、前後の絵文字をつないで1つの絵として表示させる見えない文字です。家族の絵文字なら、絵文字3つ(各4バイト)とZWJ2つ(各3バイト)で、4×3+3×2=18バイトになります。
このように「人が1文字と感じる単位」は、Unicodeでは書記素クラスタ(grapheme cluster)と呼ばれ、区切り方はUnicode標準付属書 #29で定められています。書記素クラスタで数えるツールなら家族の絵文字は1文字、UTF-16で数えるツールなら8文字になります。
日本語にもある:𠮷や濁点の分解
絵文字だけの話ではありません。「𠮷」(つちよし)はU+20BB7という大きい番号の漢字なので、UTF-16ではサロゲートペアになり、2文字と数えられることがあります。
また、「が」は1文字(U+304C)で表すこともできれば、「か」(U+304B)と濁点の結合文字(U+3099)の2つで表すこともできます。見た目は同じでも、後者は2文字と数えられます。環境によってはファイル名などがこの分解された形で保存されることがあり、コピーした文字の数が合わない原因になります。
原稿用紙(400字詰め)に換算する方法
400字詰め原稿用紙は20字×20行です。単純に「文字数÷400」で枚数の目安は出ますが、実際に原稿用紙に書くと、それより多くなるのが普通です。
単純計算より枚数が増える理由
- 段落の最初は1マス空ける
- 段落の終わりで改行すると、その行の残りのマスは空白になる
- 句読点やかぎかっこも1マスずつ使う
計算の手順
- 段落ごとに、文字数に字下げの1マスを足す
- それを20で割り、端数を切り上げて行数を出す
- すべての段落の行数を合計する
- 合計行数を20で割ると、必要な枚数がわかる
たとえば、250字・180字・370字の3段落(合計800字)の文章で計算してみます。
- 1段落目:250+1=251マス、251÷20=12.55なので13行
- 2段落目:180+1=181マス、181÷20=9.05なので10行
- 3段落目:370+1=371マス、371÷20=18.55なので19行
- 合計:13+10+19=42行。42÷20=2余り2
単純計算では800÷400=ちょうど2枚ですが、実際には2枚と2行、つまり3枚目に入ります。「原稿用紙2枚以内」という指定なら、本文を少し削る必要があります。
なお、句読点が行頭に来るときは前の行の最後のマスに入れる、などの細かい書き方は、学校や提出先の指導によって違うことがあります。指定がある場合はそちらに従ってください。
文字数制限のある入力欄やSNSで気をつけること
各サービスの文字数上限や数え方は、仕様変更で変わることがあります。ここで具体的な上限を断定することはできないため、投稿や提出の前に、そのサービスのヘルプや募集要項で最新の情報を確認してください。
そのうえで、次の点を意識するとトラブルを減らせます。
- 上限ぎりぎりを狙わず、数文字の余裕を残す
- 改行や絵文字を多く使う場合は、ほかのツールで数えた数より多く数えられる可能性を考えておく
- PDFなどからコピーした文章は、余分な改行やスペースが混ざっていることが多い
コピーした文章の不要な改行や空白は、改行削除ツールで整理してから数えると、実際の文字数に近い値になります。
文字数を数えるときのチェックリスト
提出や投稿の前に、次の項目を確認してください。
- 求められているのは文字数・単語数・バイト数のどれか
- スペースを含むか、含まないか(指定がなければ含めた数で上限内に収める)
- 改行を含むか、1文字と数えるか2文字と数えるか
- 「全角○文字」のように、半角を0.5文字として扱う指定ではないか
- 絵文字・特殊な漢字(𠮷など)・半角カタカナを使っていないか
- 原稿用紙指定なら、字下げと改行の空きマスを含めた行数で数えたか
- サービスの最新の上限をヘルプや要項で確認したか
迷ったときの目安は、「見た目の文字を1つずつ数える。スペース・改行は指定がなければ含めて考える。絵文字は1つで2文字以上になることもある」です。
よくある質問
句読点やかぎかっこは文字数に含めますか?
一般的には含めます。「。」「、」「「」」もそれぞれ1文字として数えます。原稿用紙でも句読点やかっこは1マスずつ使うため、作文の文字数指定でも含めて考えるのが基本です。
「800字以内」の課題では何文字くらい書けばよいですか?
上限を超えないことが前提ですが、何割以上書くべきかの基準は提出先によって違います。一般に、指定字数を大きく下回ると分量不足と受け取られることがあるため、要項や指導者の指示を確認したうえで、上限に近い分量を目指すのが無難です。
空行(何も書いていない行)は文字数に数えられますか?
見た目の文字はありませんが、空行には改行コードが入っているため、改行を数えるツールでは1文字または2文字として加算されます。空白・改行を除いた文字数では数えられません。上限のある入力欄では、空行も枠を使う可能性があると考えておきましょう。
数字やアルファベットは原稿用紙ではどう書きますか?
横書きの原稿用紙では、数字と小文字のアルファベットは1マスに2文字、大文字は1マスに1文字入れる書き方が一般的とされています。縦書きでは漢数字を使うのが基本です。ただし学校や提出先によってルールが違うことがあるので、指定があればそれに従ってください。
パソコンとスマホで同じ文章の文字数が違うのはなぜですか?
主な原因は、改行コードの違い(CR+LFかLFか)と、絵文字や特殊な文字の数え方の違いです。アプリによってはスペースや改行を含めるかどうかの初期設定も違います。同じツールで数え直すと比較しやすくなります。