字元計數為什麼不一致
字數限制還需要明確的計數規則。家庭表情看似一個符號,卻包含多個碼點與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。空白與換行計入總數;不含空白的計數並不刪除標點。兩種é看似相同,但位元組數不同。因此資料庫位元組限制或JavaScript長度限制可能拒絕看似很短的文字。
下一步
請逐個嘗試範例,A↵B應使用真正的換行。提交前確認目標表單限制的是字元、位元組或單詞,並遵循其規則。為換行轉換或正規化留出餘量。不要為了統一數字隨意刪除重音符號。
使用工具限制與測試條件
範例在支援Intl.Segmenter的環境經過自動測試。舊瀏覽器會提示並改用碼點計數,因此組合表情的計數不同。單詞分段依語言而異,不是通用編輯規則。
參考來源
Apps24透過實作程式碼與回歸測試核對範例。瀏覽器實驗會說明條件,但不保證所有裝置的結果。回報錯誤時請提供網址、範例輸入、預期結果與瀏覽器。請勿傳送密碼、私人文件或個人資料。