ブラウザ内ツール

文字数カウンタ

「文字数」は数え方で変わります。書記素(見た目)・コードポイント・UTF-16コード単位・UTF-8バイトを同時に表示し、 絵文字がどう分解されるかまで見せます。すべてブラウザ内で処理。

10
書記素
見た目の文字数
16
コードポイント
[...str].length
21
コード単位
str.length (UTF-16)
53
UTF-8バイト
TextEncoder
行数 1単語数(空白区切り) 1

1文字ずつの分解(書記素 → コードポイント)

👨‍👩‍👧‍👦×7🍣

黄色は複数コードポイントで1文字を構成(結合絵文字・サロゲートペア等)。ホバーでU+…表示。

「文字数」は数え方で変わります。👨‍👩‍👧‍👦 は見た目1文字(書記素1)ですが、ZWJ(ゼロ幅接合子)で4人+接合子を繋いだ7コードポイント・11 UTF-16コード単位・25 UTF-8バイトです。 DBの文字数制限やAPIのバリデーションがどの単位かで、通る/弾かれるが変わります。すべてブラウザ内で処理。

なぜ数え方で変わるのか

  • JavaScriptの .length はUTF-16コード単位。絵文字や一部漢字はサロゲートペアで2に数えられる。
  • [...str] はコードポイント単位。ZWJで繋いだ結合絵文字は複数コードポイントになる。
  • 見た目の1文字=書記素Intl.Segmenter で数える。DBの文字数制限やTwitterの字数がどの単位かで、通る/弾かれるが変わる。