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

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

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

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

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

関連記事

あわせて読むと理解が深まる関連記事をまとめました。

トピック記事
1フレームは何秒・何ms? 60fpsと120fpsの計算方法1フレームは何秒・何ms? 60fpsと120fpsの計算方法
AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026|GPTBot・ClaudeBot・Google-Extended・GEO戦略
APIキャッシュ設計ガイドAPIキャッシュ設計ガイド|ETag・Cache-Control・304・CDNキャッシュキーの実務
Web APIのエラーハンドリング設計Web APIのエラーハンドリング設計|RFC 9457・error_code・400/422/409の使い分け
Web APIのべき等性(Idempotency)設計Web APIのべき等性(Idempotency)設計|二重決済を防ぐ実装ガイド
API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較
APIのレート制限(Rate Limiting)実装ガイドAPIのレート制限(Rate Limiting)実装ガイド|アルゴリズム選定と429エラーの適切なハンドリング
APIデバッグで使うツールの使い分けAPIデバッグで使うツールの使い分け|JSON整形・JWT・Base64のワークフロー
Aspect Ratio 計算Aspect Ratio 計算|16:9・4:3 解像度一覧
Astro Content Collections でブログを構築するAstro Content Collections でブログを構築する
Base64 Encode DecodeBase64 Encode Decode|Data URI と API 認証
Base64とは?仕組みから使い方まで解説Base64とは?仕組みから使い方まで解説