文字数の数え方 — バイト・コードポイント・書記素の違い
更新日 2026-07-28
「この文章は何文字?」——単純そうで、実は数え方が複数あります。日本語や絵文字が入ると、ツールや言語によって結果が食い違うことがあります。その正体は「バイト」「コードポイント」「書記素」という 3 つの数え方の違いです。順番に見ていきましょう。
バイト:保存・通信のサイズ
バイトは、コンピュータがデータを保存・送信するときの大きさの単位です。文字がバイト列になるとき、UTF-8 という方式が広く使われます。UTF-8 では、半角英数字は 1 バイト、日本語の多くは 3 バイトになります。データベースのカラム上限や通信量は、文字数ではなくバイト数で決まることがあります。
コードポイント:Unicodeの番号
Unicode は、世界中の文字に一意の番号(コードポイント)を割り当てた仕組みです。「あ」や「A」はそれぞれ 1 つのコードポイントですが、絵文字や合成文字では複数のコードポイントが組み合わさることがあります。プログラムの文字列長(文字数)がこの単位で数えられることも多く、見た目の文字数とずれる原因になります。
書記素:人が見た「1文字」
書記素(グラフェムクラスタ)は、人が見て「1 文字」と感じるまとまりです。例えば家族の絵文字 👨👩👧 は複数のコードポイントで構成されますが、見た目は 1 文字なので書記素では 1 と数えます。濁点を後付けした合成文字も同様です。人間の直感に最も近い数え方がこれです。
なぜ数がずれるのか
- 「あ」1 文字 → 書記素 1 / コードポイント 1 / バイト 3(UTF-8)
- 絵文字 😀 → 書記素 1 / コードポイント 1 / UTF-16 単位 2(サロゲートペア)
- 家族絵文字 👨👩👧 → 書記素 1 だが、コードポイントは複数
- SNS の字数制限やフォームの上限が、どの単位で数えているかは仕様次第
当サイトの文字数カウントは、書記素・コードポイント・UTF-16 単位・UTF-8 バイト数をまとめて表示するので、目的に応じた「正しい文字数」を確認できます。テキストをバイト列で運ぶ Base64 や、URL に載せる URL エンコードとあわせて理解すると、文字とバイトの関係がより腑に落ちます。