本サイトは広告(アフィリエイトリンク・Google AdSense)を含みます。

文字数の数え方の違い 空白・改行・絵文字・バイト数

文字数カウントの結果と入力欄の判定が食い違うのは、数え方の定義が違うためです。空白と改行の扱い、エントリーシートや申請フォームの上限、X(旧 Twitter)の重み付け、絵文字と結合文字、UTF-8 と Shift_JIS のバイト数の違いを説明します。

数え方が食い違う理由

「文字数カウントでは 398 文字なのに、入力欄では 400 を超えていると言われる」という食い違いは、どちらかが間違っているのではなく、数え方の定義が違うために起きます。定義の違いは4つあります。空白と改行を数えるか、絵文字や結合文字を1と数えるか、文字数ではなくバイト数で数えているか、特定の文字(URL など)を固定の長さに置き換えているか、です。

空白と改行

原稿用紙に書く作文では、句読点も空白も1マスを使うため、空白と改行を含めて数えるのが普通です。一方、「本文の実質」を測りたい場面では空白と改行を除きます。文字数カウントが両方の数字を並べて出しているのはこのためです。

全角スペースは、見た目が空白でも文字コードとしては1文字(U+3000)です。「空白を除く」設定で全角スペースも除くか、半角だけ除くかは、ツールによって扱いが違います。

エントリーシートと申請フォーム

就職活動のエントリーシートや、助成金などの申請フォームの「400字以内」は、ほとんどの場合、入力欄が受け付ける上限であり、空白と改行を含んだ数です。フォームの内部は JavaScript の length で数えていることが多く、これは後述する「UTF-16 のコードユニット数」です。通常の日本語と英数字なら見た目の文字数と一致しますが、絵文字や一部の記号は2と数えられます。

「400字程度」のように上限ではなく目安として書かれている場合は、8〜9割以上を埋めるのが慣例ですが、これは数え方ではなく書き方の話です。

SNS の数え方

X(旧 Twitter)は、日本語、中国語、韓国語の文字を1文字あたり2、英数字を1として重み付けし、合計 280 まで投稿できます。日本語だけなら 140 文字、英語だけなら 280 文字です。URL は長さに関係なく 23 として数えられます。このため、文字数カウントの結果と X の残り文字数は一致しません。

他の SNS は単純な文字数で数えることが多いものの、上限の値や絵文字の扱いは各サービスの仕様で変わるため、投稿画面の表示を最終の判断にしてください。

絵文字と結合文字

家族の絵文字(👨‍👩‍👧)は、見た目は1つですが、3つの絵文字をゼロ幅接合子(U+200D)でつないだもので、コードポイントは5つ、JavaScript の length では 8 になります。国旗の絵文字は2つの地域指示子の組、肌の色が付いた絵文字は修飾子が1つ加わります。

また、「が」が「か」と濁点(U+3099)の2文字で表されている場合(macOS のファイル名に多い NFD 形式)、見た目は1文字でも2と数えられます。見た目の文字数と数えた結果が合わないときは、Unicode・文字コード確認に貼ると、何個のコードポイントでできているかが分かります。

バイト数

古いシステムや一部のデータベース、メールの件名などでは、上限が文字数ではなくバイト数で決まっています。同じ「あいう」でも、UTF-8 では 9 バイト、Shift_JIS では 6 バイトです。絵文字は UTF-8 で 4 バイトになります。上限が「全角 20 文字以内」と書かれている場合、内部は Shift_JIS 換算の 40 バイトであることが多く、半角のカタカナや英数字は1バイトとして扱われます。

半角カタカナは画面上では小さく見えても、UTF-8 では3バイトを使います。バイト数を減らす目的で半角カタカナに変えるのは、Shift_JIS 前提のシステム以外では効果がありません。全角と半角をそろえる必要があるときは、全角・半角変換で一括変換できます。

確認に使えるツール

最終更新: 2026-10-24 / 監修: 飛田 宏紀(情報処理安全確保支援士(登録セキスペ))