文字数カウントの注意点|サロゲートペアと改行コードの扱い
プログラミング 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 指定など、文字数が厳格に定められているシステムでは、**「バイト数」なのか「見た目の文字数」**なのかを明確に定義して実装することが重要です。