文字列の長さとは?

文字列の長さは、何を数えるかによって異なります。人間には文字として見えるものでも、プログラムはコードポイント、UTF-16コード単位、またはバイトを数えるため、これらの数値はしばしば異なります。絵文字の 👍🏽 は1文字に見えますが、コードポイントでは2個、UTF-16コード単位では4個、UTF-8バイトでは8バイトです。JavaScript、Java、C# は長さとしてUTF-16コード単位を返し、データベースではバイト数で制限されることが多く、フォームフィールドでは改行を2文字として数える場合があります。

ツールの説明

このツールは、文字列の長さを4つの単位で同時に表示し、選択した単位で最小長と最大長の範囲内に収まっているかを確認します。ユーザー名、タイトル、データベースの値が制限内に収まるかどうかや、同じテキストなのに2つのプログラムで長さが異なる理由を確認できます。文字列が長すぎる場合は、文字の途中で切れることなく制限内に収まるよう切り詰めたコピーを取得できます。

機能

  • 文字、Unicodeコードポイント、UTF-16コード単位、UTF-8バイトをカウント
  • 選択した単位で、任意の最小長および最大長に対して長さを確認
  • 制限まであといくつか、不足しているか、または超過しているかを表示
  • 長すぎる文字列を、絵文字、旗、アクセント付き文字の途中で分割せずに切り詰める
  • 先頭と末尾の空白を無視可能
  • HTMLフォームで送信される形式に合わせ、改行を CR LF としてカウント可能

仕組み

文字は書記素クラスタ、つまり人が1文字として読む単位であり、ブラウザーに組み込まれたUnicodeテキスト分割機能によって検出されます。コードポイントは、文字列内のUnicode値です。UTF-16コード単位は、JavaScriptの String.length が返す値です。基本多言語面の外側にある文字、たとえば多くの絵文字は、UTF-16では2個分として扱われます。UTF-8バイトは、文字列をUTF-8でエンコードしたときのサイズです。切り詰めでは、次の文字を追加すると最大長を超えるまで、完全な文字を保持します。

ヒント

  • MySQL の VARCHAR または PostgreSQL の varchar の制限を確認する場合は、Unicodeコードポイントで確認してください。インデックスキーやネットワークプロトコルのフィールドなど、バイト数の制限を確認する場合は、UTF-8バイトで確認してください。
  • HTML input の maxlength 属性はUTF-16コード単位をカウントするため、絵文字1つで2個分を使用する場合があります。
  • ブラウザーは textarea の改行を CR LF として送信するため、長さを確認するサーバーでは各改行を2回分としてカウントすることがあります。一致させるには、CR LF オプションを有効にしてください。