字元計數為什麼不一致

字數限制還需要明確的計數規則。家庭表情看似一個符號,卻包含多個碼點與UTF-16單位。以下比較可見字素、JavaScript長度與UTF-8位元組。

輸入與結果

Intl.SegmenterUTF-16UTF-8 (bytes)
Hello world111111
é (U+00E9)112
é (U+0065 U+0301)123
👨‍👩‍👧‍👦11125
A↵B (LF)333

理解結果

Apps24使用Intl.Segmenter。空白與換行計入總數;不含空白的計數並不刪除標點。兩種é看似相同,但位元組數不同。因此資料庫位元組限制或JavaScript長度限制可能拒絕看似很短的文字。

下一步

請逐個嘗試範例,A↵B應使用真正的換行。提交前確認目標表單限制的是字元、位元組或單詞,並遵循其規則。為換行轉換或正規化留出餘量。不要為了統一數字隨意刪除重音符號。

使用工具

限制與測試條件

範例在支援Intl.Segmenter的環境經過自動測試。舊瀏覽器會提示並改用碼點計數,因此組合表情的計數不同。單詞分段依語言而異,不是通用編輯規則。

參考來源

Apps24透過實作程式碼與回歸測試核對範例。瀏覽器實驗會說明條件,但不保證所有裝置的結果。回報錯誤時請提供網址、範例輸入、預期結果與瀏覽器。請勿傳送密碼、私人文件或個人資料。