文字列長さ計算ツール

複数のエンコーディングで文字列の長さを計算:文字数、コードポイント数、書記素クラスター数、UTF-8/UTF-16/UTF-32バイトサイズ。

このツールについて

文字列長さ計算ツールは、テキストの長さを複数の次元で同時に測定する無料のブラウザベースツールです。 単純な.lengthプロパティの呼び出しとは異なり、このツールは全体像を 示します:JavaScript文字数(UTF-16コードユニット)、Unicodeコードポイント数、 書記素クラスター数(人間が「文字」と認識するもの)、そして UTF-8、UTF-16、UTF-32エンコーディングでのバイトサイズ。

文字列の長さを理解することは、データベース、API、文字数や バイト制限を設けているプラットフォームで作業する際に不可欠です。 家族の絵文字のような1つの絵文字が、1つの書記素クラスターでありながら 7つのコードポイント、25のUTF-8バイトになることがあります。 データベースのカラムがバイト単位のVARCHAR(255)である場合、 短く見える文字列が容易にオーバーフローする可能性があります。

書記素クラスター数は、ブラウザの組み込みIntl.Segmenter APIを使用して テキストを視覚的な単位に正確に分割します。複雑な絵文字シーケンス、 結合ダイアクリティカルマーク、その他の複数コードポイント書記素を 正しく処理します。

最大長チェッカーでは、カスタム制限を設定して文字列がそれを超えているか 即座に確認できます。一般的な制限リファレンスでは、Twitterの280文字制限、 SMSメッセージ制限、データベースのVARCHARカラムなどに対して テキストがどのように測定されるかを確認できます。

文字数ではなく単語や文をカウントする必要がある場合は、 ワード&文字カウンターをお試しください。 特殊文字のエスケープには文字列エスケープ/アンエスケープを、 テキストの命名規則の変換にはテキストケースコンバーターを ご利用ください。

すべての処理はJavaScriptのネイティブなTextEncoderIntl.Segmenter、 文字列APIを使用してブラウザ内で完全に実行されます。データがサーバーに 送信されることはありません。

使い方

  1. 左側のテキスト入力エリアにテキストを入力または貼り付けます。
  2. 右側の結果パネルで、文字数、コードポイント数、書記素クラスター数、UTF-8/UTF-16/UTF-32のバイトサイズを同時に確認します。
  3. エンコーディング比較テーブルで各エンコーディングのコードポイントあたりバイト比を確認します。
  4. ツールバーで最大長の値を設定して、文字列が特定の制限内に収まるか確認します(例:Twitterの280、VARCHARの255)。
  5. 書記素ブレークダウンを表示をクリックして、各視覚的文字のUnicodeコードポイントとバイトサイズを確認します。サロゲートペアとマルチバイト文字がハイライトされます。
  6. 一般的なプラットフォーム制限テーブルまでスクロールして、Twitter、SMS、VARCHARなどの人気の制限に対してテキストがどのように測定されるか確認します。
  7. Ctrl+Shift+Cを押すかCopyをクリックして、結果の概要をクリップボードにコピーします。

人気の文字列長さの例

すべての文字列長さの例を見る →

よくある質問

文字数、コードポイント数、書記素クラスター数の違いは何ですか?

JavaScriptの.lengthはUTF-16コードユニットの数を返し、文字数ではありません。コードポイントは単一のUnicode値です。書記素クラスターは人間が1つの文字として認識するもので、複数のコードポイントで構成される場合があります。ASCIIテキストでは3つのカウントは同じですが、絵文字や非ラテン文字では大きく異なる場合があります。

絵文字の.lengthとコードポイント数が異なるのはなぜですか?

U+FFFFを超える絵文字は2つのUTF-16コードユニット(サロゲートペア)を必要とするため、JavaScriptの.lengthは2とカウントします。家族の絵文字のような複雑な絵文字シーケンスはZero Width Joiner(ZWJ)を使用して複数の絵文字を結合するため、多くのコードユニットでありながら1つの視覚的書記素になります。

データベースのVARCHAR制限にはどのカウントを使うべきですか?

データベースとエンコーディングによります。PostgreSQLのVARCHAR(n)は文字(コードポイント)をカウントします。utf8mb4のMySQL VARCHAR(n)も文字をカウントします。ただし、MySQLのTEXT型の制限はバイト単位です。バイト制限のカラムにはUTF-8バイト数を使用してください。

書記素クラスター数はどのように計算されますか?

このツールはモダンブラウザで利用可能なIntl.Segmenter APIを書記素粒度で使用します。これにより、Unicodeセグメンテーション規則に従って、複雑な絵文字シーケンス、結合マーク、その他の複数コードポイント書記素を正しく処理します。

サロゲートペアとは何ですか?

UTF-16はコードユニットあたり2バイトを使用します。U+FFFFを超えるコードポイントの文字は、1つの16ビットコードユニットに収まらないため、サロゲートペアと呼ばれるコードユニットのペアとしてエンコードされます。これが、JavaScriptの.lengthが単一の絵文字に対して2を返す理由です。

データは安全ですか?

はい。すべての処理はJavaScriptを使用してブラウザ内で完全に実行されます。テキストがサーバーに送信されることはありません。ツール使用中にブラウザの開発者ツールのネットワークタブで確認できます。

同じテキストでUTF-8とUTF-16のバイトサイズが異なるのはなぜですか?

UTF-8とUTF-16は異なる戦略の可変長エンコーディングです。UTF-8はASCIIに1バイト、他のほとんどのスクリプトに2-3バイト、絵文字に4バイトを使用します。UTF-16はほとんどの文字に2バイト、U+FFFFを超える文字に4バイトを使用します。英語テキストにはUTF-8がよりコンパクトです。CJKテキストにはUTF-16が小さくなることが多いです。

関連ツール