1. 同じ文章でも数が変わる理由

日本語の「あ」や英数字の「A」は、どの数え方でも1文字です。しかし、絵文字や結合文字は内部構造が複雑で、見た目とデータの持ち方が一致しません。

たとえば、家族の絵文字「👨‍👩‍👧‍👦」は、画面上では1つの絵文字に見えます。しかし内部では、4人の人物と3つの結合記号(ZWJ)からできています。そのため、見た目は1、コードポイントは7、UTF-16は11になります。

2. 3つの数え方

数え方 何を数えるか 向いている用途 注意点
見た目の文字 人が1文字と感じる単位(grapheme cluster) 文章の長さ、原稿、SNS投稿の感覚 媒体の独自ルールとは一致しないことがある
コードポイント Unicodeの符号位置 文字コードの確認、プログラムの仕様 絵文字や結合文字は複数になる
UTF-16コード単位 JavaScriptなどの文字列長 Webプログラムの内部処理 絵文字の多くは2単位。見た目とずれる

3. 具体例で比べる

代表的な文字列で、3つの数え方がどう変わるかを見てみます。表の「見た目」は、このサイトの文字数カウンターと同じgrapheme clusterの数です。

文字列 見た目 コードポイント UTF-16 補足
あ111日本語の1文字
A111半角英字
😀112サロゲートペア
👍🏽124肌色の修飾子が付く
🇯🇵1242つの地域表示記号
か + 結合濁点122結合文字で1つの見た目
👨‍👩‍👧‍👦1711ZWJでつながる家族の絵文字
a(改行)b333改行を1文字として数える
a b333空白を除くと2
。111句読点も1文字

表の数値は、このサイトの実装とUnicodeの一般的な扱いに基づく例です。OS・ブラウザ・アプリの内部処理によって、同じ文字列でも表示や数え方が変わる場合があります。

4. 改行と空白は含む?

「文字数」に改行を含めるかは、用途によって変わります。原稿用紙の枚数、SNSの投稿、プログラムの入力制限では、それぞれ違うルールが使われます。

  • 改行を含む:文章全体のデータ量や、入力欄の制限を見るとき。
  • 改行を除く:段落の切り方を無視して、本文の長さを見たいとき。
  • 空白・改行を除く:単語数に近い感覚で、実質的な文字の量を見たいとき。

このサイトでは、3つを同時に表示します。どの数が正解かは、提出先・媒体・目的によって変わります。

5. 媒体によってルールが違う

SNSや投稿サービスは、独自の数え方を持っています。URLを一定の文字数として扱う、特定の文字を2文字として数える、絵文字を2文字として扱う、といった規則です。汎用の文字数カウンターは、あくまで参考値と考えてください。

媒体別の考え方はX・Instagram・noteの文字数と数え方で整理しています。投稿前には、必ず各サービスの公式ヘルプも確認してください。

6. どれを見ればいい?

  • 文章を書くとき:見た目の文字数を基準にすると、読みやすさと感覚が合いやすい。
  • 媒体の上限を確認するとき:その媒体の公式ルールを優先する。
  • プログラムを書くとき:コードポイントとUTF-16の違いを意識する。JavaScriptの length はUTF-16の単位。
  • 文字コードを調べるとき:コードポイントやバイト数を確認する。

7. このサイトのカウンター

文字数カウントでは、見た目の文字数を主表示にし、コードポイントとUTF-16を参考値として並べています。改行・空白を除いた数、行数、段落数、目標文字数との差も確認できます。

入力した文章はブラウザ内で処理し、サーバーへ送信しません。ただし、広告・解析・ブラウザ拡張など、別の仕組みがページにアクセスする可能性はあります。機密情報や個人情報は貼らないでください。

参考