什麼是簡訊則數計算機?
這個工具能告訴你一則簡訊會佔用幾個分段(segment)、會採用哪種編碼方式(GSM-7 或 UCS-2/Unicode),以及在進入下一段之前還能再輸入幾個字元。由於電信業者是「按段計費」,因此你眼中看似一則的訊息,一旦超出長度上限,實際上可能被當成好幾則簡訊來收費。
使用方式
把你的訊息貼上或直接輸入,接著選擇編碼模式。自動偵測會在所有字元都屬於 GSM-7 字元集時採用 GSM-7,否則自動改用 UCS-2。你也可以強制指定其中一種編碼,藉此預覽兩者在計費上的差異。
計算公式說明
單段訊息在 GSM-7 編碼下可容納 160 個字元,UCS-2 則為 70 個。一旦超過上限,各分段就必須額外帶上「串接表頭(concatenation header)」來標記順序,使每段容量縮減為 GSM-7 的 153 字元、或 UCS-2 的 67 字元。分段數的算法為 ceil(訊息長度 ÷ 每段上限),也就是無條件進位。
$$\text{Segments} = \begin{cases} 1 & L \le 160 \\[4pt] \left\lceil \dfrac{L}{153} \right\rceil & L > 160 \end{cases} \qquad L = \text{GSM-7 length of }\text{Message}$$
$$\text{Segments} = \begin{cases} 1 & L \le 70 \\[4pt] \left\lceil \dfrac{L}{67} \right\rceil & L > 70 \end{cases} \qquad L = \text{length of }\text{Message}$$
實際範例
一則 200 字元的 GSM-7 訊息已超過單段 160 字元的上限,因此會啟用多段(multipart)模式:\(\lceil 200 \div 153 \rceil = 2\) 段。兩段的總容量為 \(2 \times 153 = 306\) 字元,所以還剩下 \(306 - 200 = 106\) 個字元,超過後才會需要用到第三段。
常見問題
為什麼我的訊息是在 153 字元、而不是 160 字元時就分段?因為多段訊息會在每一段保留 7 個位元組(byte)給表頭,讓手機能依序把各段重新組合回完整訊息。
哪些情況會被迫使用 UCS-2 編碼?只要出現任何不屬於 GSM-7 字元集的字元——例如常見的表情符號、彎引號(curly quotes),或許多帶重音的字母——整則訊息就會切換成 UCS-2,使上限直接降為 70/67 字元。
GSM-7 的擴充字元會額外耗用空間嗎?會的。像 {、}、[、]、|、^、~、\ 以及 € 這類字元,在 GSM-7 中每個都要佔用兩個單位,因為它們需要搭配一個跳脫字元(escape character)。