Šodien tviterī ieradās jautājums par to – cik īsziņas gala rezultātā tiek nosūtītas, rakstot tās garākas par 160 zīmēm. Tad, nu, tā kā tviterī būt izsmeļošam ir pagrūti, tad paprovēšu atbildēt šeit.
Visiem ir zināms – standarta īsziņa spēj sevī satilpināt 160 zīmes. Ne visiem ir zināms, ka šis nosacījums ir spēkā tikai tad, ja īsziņa satur tikai GSM 03.38 definētos simbolus. Lielākoties tie atbilst ASCII 7 bit simboliem ar dažiem izņēmumiem. Piemēram, visi šie simboli aizņem vienu vietu tais 160 pieļaujamajās zīmēs. Taču. Ir daži simboli, kuri aizņem divas. Piemēram – {, }, €, u.c. Tas nozīmē, ka, ja teksts satur šādas zīmītes, tad pieļaujamais īsziņas teksta garums saīsinās :)
Lai lietas sarežģītu vēl vairāk, pieņemsim, ka tu esi uzrakstījis īsziņu, kura ir garāka par 160 zīmēm. Teiksim – 161. Tādos gadījumos tālruņiem šī viena garā īsziņa ir jāsadala vairākās mazākās. Dalīšanas rezultātā katra īsziņa nedrīkst saturēt vairāk par 153 teksta simboliem (GSM gadījumā – septetiem), jo klāt nāk dienesta informācija, kura ļauj saņēmējam tās atkal apvienot pareizā secībā. Tātad, 161 zīmes gadījumā nosūtīsies divas īsziņas, kuras saturēs 153 un 8 teksta septetus. Tehniski tie būs septeti, bet nu…
Tagad, teiksim, tu sagribēji nosūtīt īsziņu, kurā ir kaut viens vienīgs “ā”. Tādos gadījumos īsziņas kodējums no iepriekšminētā GSM alfabeta tiek mainīts uz UCS2 (konkrēti – UTF-16 big endian), kā rezultātā katrs īsziņas simbols, neskatoties uz to – sevišķais vai parastais, aizņem jau divus baitus. Aritmētiski tas saīsina vienuīsziņu līdz 70 zīmēm. Ja tās garums pārsniedz 70 zīmes, tad katra daļa nesaturēs vairāk par 64 zīmēm.
Teorijā šādu daļu skaits var būt 255. Praksē parasti to skaits nepārsniedz 7. Pie kam, operators tarificē katru no šīm daļām kā vienu īsziņu.
Kopsavelkot – bez speciālajiem simboliem viena īsziņa var saturēt līdz 160 simboliem, bet pēc tam notiek īsziņu dalīšana, no kurām katra var saturēt līdz 153 simboliem. Ar speciālajiem simboliem vienas īsziņas garums ir 70 simboli, bet, ja tas ir garāks, katra daļa saturēs 64 simbolus.
Kaut kā tā. Iespējams, ka esmu mazliet saputrojies skaitļos vai definīcijās, bet virspusēji tas viss izskatās ikurāt šādi. Vēl var parunāt par SMPP, un to, ka tur viss notiek ar baitiem, nevis septetiem, kas rezultējas ļoti daudz dažādās viltībās iekš tā – kā īsziņas saturs GSM alfabeta gadījumā tiek vai netiek transformēts pie operatora, pirms nonākt līdz lietotājam. Un arī otrādāk :)