超長短信的故事
短信協(xié)議規(guī)定:一條短信的內(nèi)容最多為140個字節(jié),相當(dāng)于140個英文字母(當(dāng)然也包括數(shù)字和符號)或70個漢字。但可以使用壓縮的方法,一次發(fā)送160個字符,但僅適用于發(fā)送純英文的情況。這是因為一個字節(jié)是8位,而一個字符實際只用7位。如果1個字節(jié)放一個字符,那每個字節(jié)就會浪費1位。壓縮就是把這浪費的1位也用上:把第2個字符的1個位拼到第1個字節(jié),再把第3個字符的2個位,拼到第2個字節(jié),以此類推,160個字符就被壓縮到140個字節(jié)中了,實現(xiàn)一次發(fā)送160個字符。但對漢字而言,依照UNICODE編碼,每個漢字占2字節(jié),所以一次最多只能發(fā)送70個。對于超過70個漢字的短信,就是我們這里要說的“超長短信”。
這里所說的“一次發(fā)送”,也就是按照一條短信收費的意思。有的朋友可能覺得,我的手機(jī)一次可以發(fā)送幾百個漢字呢!這實際上是你的手機(jī)在發(fā)送時,做了處理,自動按70個字一條的原則,拆分成多條發(fā)送了!你可能沒覺察到,但電信部門卻已經(jīng)按多條扣掉你的短信費了!所謂70個漢字這種說法也是不夠準(zhǔn)確的。實際上,包含至少1個漢字的短信,其中每一個字符,都按一個漢字計數(shù)。例如:“新的1年開始,祝好事接2連3,心情4季如春,生活5顏6色,7彩繽紛,偶爾8點小財,煩惱拋到9霄云外!請接受我10心10意的祝福。”這條短信,其中的數(shù)字、逗號、感嘆號也都按漢字計算。
老型號的手機(jī),有的會自動限制輸入的字?jǐn)?shù),超過70個,就輸不進(jìn)去了;如果沒有限制,就會發(fā)送失敗。現(xiàn)在市面上銷售的手機(jī),幾乎都有自動分拆的功能,而且也有將收到的由超長短信拆分的多條自動拼接成一條的功能。使得有些朋友誤以為發(fā)了幾百個字,才花了1毛錢。電信能那么傻么?
對于自己開發(fā)短信收發(fā)軟件的朋友,在處理超長短信時,必須考慮拆分和拼接的問題。短信中心不會替你拆分,超過70個漢字,就無法發(fā)送成功。北京移動為了照顧那些老型手機(jī),以10086發(fā)送的超過70個字的短信,每條的頭上,都帶有(1/x)、(2/x)之類的表示共幾條,第幾條的提示。這當(dāng)然也是一種拆分方法,接收端也不必考慮拼接問題,但這無形中每條就占用了5個字,而且收信人閱讀也不方便。如果剛巧拆分的位置比較敏感,還會把意思給弄擰了。