文字カウンターの数が違う理由
文字制限は数え方まで確認する必要があります。家族の絵文字は1つに見えても複数のコードポイントとUTF-16単位から成ります。見える文字、JavaScriptの長さ、UTF-8バイトを比較します。
入力と結果
| Intl.Segmenter | UTF-16 | UTF-8 (bytes) |
Hello world | 11 | 11 | 11 |
é (U+00E9) | 1 | 1 | 2 |
é (U+0065 U+0301) | 1 | 2 | 3 |
👨👩👧👦 | 1 | 11 | 25 |
A↵B (LF) | 3 | 3 | 3 |
結果の読み方
Apps24はIntl.Segmenterを使います。空白と改行も数え、空白除外は句読点を除く処理ではありません。2種類のéは似ていてもバイト数が異なります。そのためバイト制限やJavaScriptの長さ制限では、短く見える文字列も拒否されます。
次の作業
例を1つずつ試し、A↵Bには実際の改行を入れてください。提出先の制限が文字、バイト、単語のどれかを調べ、そのルールに従いましょう。改行変換や正規化の余地も残してください。数合わせのためにアクセントを消さないでください。
ツールを使う制限とテスト条件
例はIntl.Segmenterのある環境で自動検証しています。古いブラウザでは案内を表示してコードポイントで代替し、結合絵文字の数が変わります。単語分割は言語によって異なり、すべての編集規則と一致しません。
参考資料
Apps24は例を実装と回帰テストで確認します。ブラウザ実験は条件を明示し、すべての端末を保証するものではありません。不具合はURL、入力例、期待する結果、ブラウザを添えてお知らせください。パスワード、非公開文書、個人情報は送らないでください。