文字数カウントの注意点|サロゲートペアと改行コードの扱い
プログラミング 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 設定ガイド 2026 | AIクローラー対応 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 Decode | Base64 Encode Decode|Data URI と API 認証 |
| Base64とは?仕組みから使い方まで解説 | Base64とは?仕組みから使い方まで解説 |