- 読了時間
- 0 秒
- 音読時間
- 0 秒
- 平均単語長
- 0
- UTF-8 のバイト数
- 0
- UTF-16 の単位数(String.length)
- 0
- Unicode コードポイント
- 0
仕組み
文字数を数えるのは簡単に思えますが、絵文字が入ると話が変わります。人が目にする数は、データベースに保存される数ともプログラミング言語が返す数とも一致しません。家族の絵文字は画面上では 1 文字ですが、Unicode のコードポイントでは 5、UTF-16 の単位(JavaScript・Java・C# の String.length が返す値)では 8、UTF-8 では 18 バイトです。このツールは 4 つの数値をすべて表示するので、マーケティング文にも VARCHAR 列のサイズ設計にも使えます。
単語・文・文字は、ブラウザーに組み込まれた Unicode の分割規則で数えます。カーソル移動やダブルクリックでの選択に使われるのと同じ規則です。そのため中国語や日本語のように単語を空白で区切らない言語でも機能し、結合文字のアクセント付きの文字を 2 文字と数えることもありません。
読了時間には 190 件の研究のメタ分析(Brysbaert, 2019)による平均速度を使っています。ノンフィクションの黙読で毎分 238 語、音読で 183 語です。テキストはブラウザーの外に出ず、共有リンクにも保存されません。
例
👨👩👧1 · 5 · 8 · 18見た目は 1 文字、コードポイントは 5(3 つの絵文字を 2 つの見えない結合文字でつないだもの)、UTF-16 の単位は 8、UTF-8 では 18 バイトです。API が 280「文字」までと制限している場合、どの数え方なのかを確認しておきましょう。SMS · 151 GSM-7 → 151 UCS-21 SMS → 3 SMS151 文字の SMS は GSM アルファベットなら 1 通に収まりますが、í が 1 つ入るだけで端末は UCS-2 に切り替わり、各パートは 67 文字までになります。同じ文面が 3 通分になってしまいます。café (NFC) · cafe + ◌́ (NFD)4 · 5同じ単語でも、é を 1 つのコードポイントとして保存する場合と、e の後に結合用のアクセント記号を続けて保存する場合があります。画面上は同じに見え、このツールはどちらも 4 文字と数えますが、String.length は 4 または 5 を返します。ユースケース
- タイトルやメタディスクリプションを、Google で途中で切れない長さに収める。
- キャンペーンや認証コードが何通分の SMS になるかを計算し、費用を押し上げる文字を見つける。
- データベースの列サイズを決めたり、utf8mb4 の MySQL の VARCHAR のようなバイト上限のある項目を検証したりする。
- 課題、要旨、公募などの最小・最大語数を満たす。
- 記事を読むのにかかる時間や、原稿のナレーション時間を見積もる。
- 文章を公開する前に、使いすぎている語を見つける。
よくある質問
別のカウンターと数が違うのはなぜ?
数え方が 1 つではないからです。多くのカウンターは String.length で UTF-16 の単位を数えるため、絵文字が 2 以上になります。アポストロフィで区切る正規表現で単語を分け、「don't」や「l'eau」を 2 語と数えるものもあります。このツールでは文字は画面に見えるとおりに、単語は Unicode の規則に従って数えるので、人が数える感覚に最も近くなります。
アクセント記号 1 つで SMS の料金が変わるのはなぜ?
7 ビットの GSM アルファベットでは 1 通 160 文字まで送れますが、アクセント付きの文字がすべて含まれるわけではありません。é、ñ、ü、à はありますが、á、í、ó、ú はありません。このアルファベットにない文字が 1 つでもあると、メッセージ全体が UCS-2 になり、上限は 70 文字、分割する場合は 1 パート 67 文字に下がります。これらを含むスペイン語の国別テーブルを使う事業者もありますが、当てにしないほうが安全です。
Google のタイトルは何文字まで?
Google は文字数ではなくピクセル幅(パソコンでは約 600px)で切り詰めるため、実際の上限は使う文字によって変わります。W は i よりはるかに幅を取ります。50〜60 文字(全角ならその約半分)ならたいてい全部表示され、メタディスクリプションは 155〜160 文字程度まで表示されます。ツールのバーはこれらの値を目安にしています。
X(Twitter)の文字数と一致する?
ほとんどの場合は一致しますが、完全ではありません。X はリンクを長さに関係なく 23 文字、中国語・日本語・韓国語の文字を 2 文字と数えます。リンクのないラテン文字の文章なら同じ数になります。
テキストはデータベースで何バイトになる?
列のエンコーディングによります。UTF-8 では英字は 1 バイト、アクセント付き文字やキリル文字は 2、中国語(漢字)は 3、絵文字は 4 バイトです。utf8mb4 の MySQL は VARCHAR の長さを文字数で数えますが、行の上限はバイト数です。NVARCHAR の SQL Server は UTF-16 を使うので、このツールの UTF-16 単位数がそのまま目安になります。