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