- 閱讀時間
- 0 秒
- 朗讀時間
- 0 秒
- 平均單字長度
- 0
- UTF-8 位元組數
- 0
- UTF-16 程式碼單元(String.length)
- 0
- Unicode 碼位
- 0
運作方式
統計字元看似簡單,直到遇到表情符號。人眼看到的數量,既不等於資料庫儲存的數量,也不等於程式語言回傳的數量:家庭表情在螢幕上是一個字元,但它有 5 個 Unicode 碼位、8 個 UTF-16 程式碼單元(JavaScript、Java 或 C# 中 String.length 的回傳值),在 UTF-8 中占 18 個位元組。本工具同時顯示這四種計數,既適用於行銷文案,也適用於決定 VARCHAR 欄位的長度。
單字、句子和字元都依瀏覽器內建的 Unicode 分段規則統計,也就是它移動游標或按兩下選字時用的規則。因此它同樣適用於中文、日文等不以空格分詞的語言,也不會把帶組合重音符的字母算成兩個字元。
閱讀時間採用一項涵蓋 190 項研究的後設分析(Brysbaert,2019)得出的平均速度:非虛構類默讀每分鐘 238 個單字,朗讀每分鐘 183 個。文字不會離開你的瀏覽器,也不會儲存在分享連結中。
範例
👨👩👧1 · 5 · 8 · 18可見字元 1 個、碼位 5 個(三個表情由兩個不可見的連接字元相連)、UTF-16 程式碼單元 8 個、UTF-8 占 18 個位元組。如果某個 API 限制為 280 個「字元」,最好弄清楚它用的是哪一種計數。SMS · 151 GSM-7 → 151 UCS-21 SMS → 3 SMS一則 151 個字元的簡訊用 GSM 字母表只需一則,但只要出現一個 í,手機就會改用 UCS-2,每段只能容納 67 個字元:同樣的內容變成了三則簡訊。café (NFC) · cafe + ◌́ (NFD)4 · 5同一個單字裡的 é 可以存成一個碼位,也可以存成 e 加一個組合重音符。兩者在螢幕上完全相同,本工具都計為 4 個字元,但 String.length 會回傳 4 或 5。使用情境
- 把標題和 meta 描述控制在 Google 不會截斷的長度內。
- 計算一次行銷活動或驗證碼要占幾則簡訊,並找出讓成本變高的那個字元。
- 決定資料庫欄位的長度,或驗證有位元組上限的欄位,例如 MySQL utf8mb4 下的 VARCHAR。
- 符合作業、摘要或徵稿的最少或最多字數要求。
- 估算讀完一篇文章或錄製一段稿子需要多久。
- 在發布文字前找出重複過多的詞。
常見問題
為什麼別的計數器給出的數字不一樣?
因為計數方式並不唯一。許多計數器使用 String.length 統計 UTF-16 程式碼單元,所以一個表情會算作 2 個或更多;還有些用會在撇號處斷開的規則運算式分詞,把 "don't" 或 "l'eau" 算成兩個單字。這裡的字元就是螢幕上看到的字元,單字遵循 Unicode 規則,最接近人的計數方式。
為什麼一個重音字母會改變簡訊費用?
7 位元 GSM 字母表每則簡訊允許 160 個字元,但並不包含所有帶重音的字母:有 é、ñ、ü 和 à,卻沒有 á、í、ó、ú。只要出現一個不在該字母表中的字元,整則簡訊就會改用 UCS-2,上限降到 70 個字元,需要拆分時每段 67 個。有些電信業者使用包含這些字母的西班牙語國家表,但最好不要指望這一點。
Google 的標題可以有多少個字元?
Google 不是依字元數截斷,而是依像素寬度截斷,桌面版約 600 像素,因此實際上限取決於所用字母:W 比 i 寬得多。50 到 60 個字元通常能完整顯示;meta 描述大約顯示到 155 至 160 個字元。本工具的進度條以這些數值為參考。
統計結果與 X(Twitter)一致嗎?
大多數情況下一致,但並不完全相同。X 會把每個連結不論長短都算作 23 個字元,把中文、日文和韓文字元算作 2 個。對於不含連結的拉丁字母文字,數字是一樣的。
文字在資料庫中占多少位元組?
取決於欄位的編碼。在 UTF-8 中,英文字母占 1 個位元組,帶重音的字母和西里爾字母占 2 個,中文占 3 個,表情符號占 4 個。MySQL 在 utf8mb4 下依字元計算 VARCHAR 長度,但資料列的上限依位元組計算;SQL Server 的 NVARCHAR 使用 UTF-16,對應本工具的 UTF-16 程式碼單元數。