Unicode / 文字数ガイド
絵文字と結合文字の文字数を単位別に数える
画面で1文字に見えても、Unicode code point・JavaScriptのUTF-16 unit・UTF-8 bytesでは数が変わります。入力上限の単位を確認し、同じ単位で検算します。
Unicode / 文字数ガイド
画面で1文字に見えても、Unicode code point・JavaScriptのUTF-16 unit・UTF-8 bytesでは数が変わります。入力上限の単位を確認し、同じ単位で検算します。
| fixture | 表示 | code point | UTF-16 | UTF-8 |
|---|---|---|---|---|
| emoji 😀 | 1 | 1 | 2 | 4 |
| combining é | 1 | 2 | 2 | 3 |
| family | 1 | 7 | 11 | 25 |
| ascii hello | 5 | 5 | 5 | 5 |
表示文字は利用者の見え方、code pointはUnicodeの値、UTF-16はJavaScriptのunit、UTF-8はbyteです。
emoji.txt、combining.txt、family.txt、ascii.txtを同じ単位で数え、expected.csvと照合します。家族絵文字はzero-width joinerを含む1つの表示列です。
const codePoints = [...text].length; const utf16Units = text.length; const utf8Bytes = new TextEncoder().encode(text).length;
このガイドはブラウザー内の静的資料です。文字列や入力内容を外部へ送信しません。
「文字数」とだけ書かれた仕様では、どの数え方か確認するまで入力上限を満たすとは言いません。特にemojiと結合文字は見た目だけで判断しません。