ブラウザ内ツール
文字数カウンタ
「文字数」は数え方で変わります。書記素(見た目)・コードポイント・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の字数がどの単位かで、通る/弾かれるが変わる。