Jeden standardowy SMS może zawierać do 160 znaków. Jeśli wiadomość zawiera polskie znaki, takie jak ą, ę lub ś, limit zwykle spada do 70 znaków. Różnica wynika z zastosowanego kodowania: GSM-7 mieści więcej znaków niż Unicode (UCS-2).
Dlaczego limit SMS-a zależy od kodowania?
Pojedyncza wiadomość SMS ma pojemność 1120 bitów, czyli 140 bajtów. W kodowaniu GSM-7 jeden znak zajmuje 7 bitów, dlatego w wiadomości mieści się 1120 ÷ 7 = 160 znaków.
Gdy tekst zawiera znak spoza podstawowego zestawu GSM-7, telefon przełącza wiadomość na kodowanie Unicode (UCS-2). W tym standardzie jeden znak zajmuje 16 bitów, więc limit wynosi 1120 ÷ 16 = 70 znaków. Dotyczy to między innymi polskich znaków diakrytycznych, takich jak ą, ę, ł, ń, ó, ś, ż i ź, a także wielu emotikonów oraz znaków z innych alfabetów.
| Kodowanie | Limit znaków (1 SMS) | Limit znaków (segment łączony) |
|---|---|---|
| GSM-7 | 160 | 153 |
| Unicode (UCS-2) | 70 | 67 |
Niektóre znaki dostępne w rozszerzonym zestawie GSM-7, na przykład nawiasy klamrowe, znak euro, daszek czy pionowa kreska, mogą zajmować miejsce dwóch znaków. Dlatego licznik w telefonie może zmniejszać się szybciej, nawet gdy wiadomość nadal korzysta z kodowania GSM-7.
Co dzieje się po przekroczeniu limitu?
Dłuższy tekst jest dzielony na kilka części, a telefon odbiorcy zwykle łączy je ponownie w jedną wiadomość. Każdy segment otrzymuje jednak nagłówek techniczny, który informuje urządzenie o kolejności części i sposobie ich scalenia. Nagłówek zajmuje część dostępnego miejsca na treść:
- GSM-7 – pojedynczy SMS ma 160 znaków, ale segment wiadomości łączonej tylko 153 znaki.
- Unicode (UCS-2) – pojedynczy SMS ma 70 znaków, natomiast segment wiadomości łączonej 67 znaków.
- Wiadomość bez polskich znaków o długości 161 znaków zostanie więc podzielona na dwa segmenty, a wiadomość Unicode przekraczająca 70 znaków również zostanie wysłana w kilku częściach.
- Liczba wysłanych lub rozliczonych SMS-ów może odpowiadać liczbie segmentów, nawet jeśli odbiorca widzi je jako jeden długi tekst.