文字数カウントの注意点|サロゲートペアと改行コードの扱い

プログラミング JavaScript 文字コード
結論

単純な .length では**絵文字や一部の漢字が「2文字」**と判定されます。正確な文字数を測るには、スプレッド構文 [...str].length などを使って、文字の単位(コードポイント)を正しく扱う必要があります。

文字数カウントの落とし穴

1. サロゲートペア(絵文字など)

多くの言語の標準的なカウント(UTF-16ベース)では、絵文字(例:🍎)は内部的に2つの値のペアで構成されているため、2文字として数えられます。

2. 改行コードの違い

Windows(CRLF)とMac/Linux(LF)では改行の内部表現が異なります。DBの文字数制限に引っかかる場合、改行が1文字か2文字かを確認する必要があります。

🔢 この場で文字数をカウントする

文字数

0

行数

0

単語数(スペース区切り)

0

バイト数(UTF-8)

0

正確にカウントする方法(JavaScript例)

const text = "🍎abc";

console.log(text.length); // 5 (絵文字が2文字扱い)
console.log([...text].length); // 4 (正解)

実務での対応

SNSの投稿制限や、データベースの VARCHAR 指定など、文字数が厳格に定められているシステムでは、**「バイト数」なのか「見た目の文字数」**なのかを明確に定義して実装することが重要です。