このツールが計算するもの
この計算機は、Unicodeコードポイントに基づく文字指向のカウントと、UTF-8バイトに基づくストレージ指向のカウントを報告します。内部的には、検証済みのヘルパーがUTF-16コードユニットも区別します。これにより、一部の絵文字や補助文字について、JavaScript文字列のネイティブな長さが表示される結果と異なる理由が説明されます。
「文字」にはコンピューティングにおいていくつかの意味があります。コードポイントカウントはUTF-16ユニットをカウントするよりもUnicodeを意識していますが、それでも常にユーザーが知覚する書記素クラスタの数であるとは限りません。
入力項目
スペース、改行、絵文字、結合記号、および非ラテン文字を含む任意のテキストを入力または貼り付けてください。計算はブラウザ内で行われ、テキストを長さサービスに送信する必要はありません。
バイト制限が重要な場合は、正確な改行コードを保持してください。WindowsのCRLF改行は2つのコードポイントと2つのUTF-8バイトを使用しますが、LF改行は1つを使用します。Unicode正規化も、見かけ上のテキストを変えずにコードポイントとバイトのカウントを変更する可能性があります。
方法と数式
コードポイントカウントは、生のUTF-16ユニットをインデックスするのではなく、Unicodeコードポイントによって文字列を反復処理します。UTF-16カウントは言語ランタイムのコードユニット長です。バイトカウントは文字列をUTF-8としてエンコードし、結果のオクテットをカウントします。
基本的なASCII文字は1つのUTF-16ユニットと1つのUTF-8バイトを使用します。多くのアクセント付き文字は1つのコードポイントですが2つのUTF-8バイトを使用します。補助絵文字は一般に1つのコードポイント、2つのUTF-16コードユニット、および4つのUTF-8バイトを使用します。
ゼロ幅接合子で結合された絵文字シーケンスのような書記素は、1つの記号として表示されながら複数のコードポイントを含むことができます。このツールは書記素セグメンテーションを適用しません。
使用例
A😀é を入力します。
- Unicodeコードポイント:
A、😀、é、合計 3。 - UTF-16コードユニット:Aに1、😀に2、éに1、合計 4。
- UTF-8バイト:Aに1、😀に4、éに2、合計 7。
表示される計算機は3文字と7バイトを報告します。文書化されたUTF-16の値4は、素朴なJavaScriptの .length カウントが一致しない理由を説明します。
結果の解釈方法
コードポイントで明示的に定義されたプロトコルやデータルールを検証する場合はコードポイントを使用してください。エンコードされたバイトで定義されたペイロード、データベース、またはAPIの制限にはUTF-8バイトを使用してください。どちらも、書記素クラスタ、表示幅、SMSセグメント、またはフォントグリフで定義された制限の代用とすべきではありません。
製品の制限を施行する場合は、単位と正規化形式を文書化してください。インターフェースが「文字」と言っている間にバックエンドがバイトを拒否するという理由だけで、ユーザーがテキストを失うべきではありません。
精度と制限事項
バイトカウントは特にUTF-8を使用します。UTF-16、UTF-32、レガシーエンコーディング、圧縮、エスケープ、JSON構文、およびトランスポートフレーミングは異なるサイズを持ちます。このツールはテキストを正規化したり、書記素クラスタ、単語、行、列、グリフ、またはレンダリング幅をカウントしたりしません。
視覚的に同一の文字列が異なるエンコーディングを持つ可能性があります。例えば、事前合成されたアクセント付き文字と、基本文字に結合記号を加えたものです。セキュリティ上重要な識別子には、長さだけを超えた文書化されたUnicodeポリシーが必要です。
情報源
- Unicode Standard, Chapter 2: General Structure は、コードポイント、エンコーディング形式、およびユーザーが知覚するテキスト要素を区別しています。
- WHATWG Encoding Standard は、現代のウェブプラットフォームのテキスト処理で使用されるUTF-8エンコーディング動作を定義しています。
編集記録
著者:SoupCalc 編集チーム
最終確認日:2026年8月14日
確認範囲:コードポイントの反復処理、UTF-16サロゲートの動作、UTF-8エンコーディング、書記素の制限事項、標準リファレンス、およびA😀éのカウント3、4、7を確認しました。