Typograficzny apostrof może zmienić koszt wiadomości składającej się ze zwykłych liter łacińskich. Telefon wyświetla niemal to samo zdanie. Bird potrzebuje jednak więcej segmentów sieciowych, żeby je wysłać.
Jakie są te dwa kodowania?
GSM-7 używa kompaktowego alfabetu, a UCS-2 reprezentuje znaki spoza tego alfabetu.
Zwykłe litery łacińskie, cyfry, typowa interpunkcja i niektóre litery z akcentami mieszczą się w GSM-7. Specyfikacja alfabetu SMS definiuje ten zestaw.
UCS-2 obsługuje znaki spoza tego zestawu, w tym typograficzne cudzysłowy i emoji. Niektóre emoji liczone są podwójnie w ramach limitu znaków.
Tekst chiński, japoński, koreański, cyrylica, arabski, tajski i hindi wymagają znaków spoza alfabetu GSM-7 kodowania Bird.
Jak Bird wybiera kodowanie?
Bird sprawdza całą treść względem GSM-7 i używa UCS-2, jeśli jakikolwiek znak nie przejdzie tego testu.
Kodowanie obejmuje całą treść wiadomości. Typograficzny apostrof nie otrzymuje osobnego kodowania w stosunku do otaczających go słów. Jego obecność zmienia kodowanie również tych słów.
Wynik możesz sprawdzić przez segments.encoding, którego wartości to GSM_7BIT i UCS2.
Jak kodowanie wpływa na liczbę segmentów?
Szersze kodowanie zostawia mniej miejsca na tekst w każdym płatnym segmencie.
Bird stosuje następujące limity:
| Kodowanie | Pojedynczy segment | Każda część po podziale |
|---|---|---|
| GSM-7 | 160 znaków | 153 znaki |
| UCS-2 | 70 znaków | 67 znaków |
Te limity liczą niektóre znaki podwójnie, jak opisano poniżej. Każda część po podziale rezerwuje miejsce na nagłówek, dzięki któremu telefon może złożyć części z powrotem. Konkatenacja SMS wyjaśnia strukturę nagłówka.
Treść składająca się ze 155 zwykłych liter łacińskich zajmuje jeden segment GSM-7. Dodaj typograficzny apostrof, a 156-znakowa treść przełączy się na UCS-2. Przekracza 70 znaków, więc obowiązuje limit wieloczęściowy: 156 podzielone przez 67 zaokrągla w górę do trzech segmentów.
Bird rozlicza każdy segment osobno. Segmenty SMS wyjaśnia, jak liczba segmentów przekłada się na płatną jednostkę.
Które znaki wymagają szczególnej uwagi?
Typograficzna interpunkcja, emoji i litery spoza alfabetu GSM-7 mogą zmienić kodowanie całej wiadomości.
- Proste apostrofy mieszczą się w GSM-7; typograficzne apostrofy nie.
- Zwykły łącznik mieści się; typograficzne półpauzy i pauzy nie.
- Trzy kropki mieszczą się; pojedynczy znak wielokropka
…nie. éiümieszczą się;á,íiúnie.
GSM-7 liczy podwójnie następujące znaki: ^, {, }, \, [, ], ~, | i €. Znak nowej strony (form feed), znak sterujący żądający podziału strony, również jest liczony podwójnie. Osiemdziesiąt znaków euro wypełnia więc jeden segment.
W UCS-2 emoji takie jak 😀 liczone jest podwójnie. Trzydzieści pięć wypełnia jeden segment. Dodanie kolejnego przekracza jego pojemność.1
Czy smart encoding może zapobiec zmianie kodowania?
Smart encoding może zastąpić obsługiwaną interpunkcję, gdy każdy wynikowy znak mieści się w GSM-7.
Włącz go dla każdej wysyłki za pomocą options.smart_encoding, wartości logicznej przyjmującej true lub false, z domyślną wartością false. Typograficzny apostrof może zostać zamieniony na prosty apostrof. Wielokropek może zostać zamieniony na trzy kropki.
Bird pozostawia oryginalną treść bez zmian, jeśli jakikolwiek nieobsługiwany znak wciąż występuje. Tekst arabski lub japoński zachowuje więc limity pojemności Unicode. Zmiana tego ustawienia nie sprawi, że te pisma zmieszczą się w GSM-7.
Smart encoding opisuje reguły zamiany, a kalkulator segmentów pozwala sprawdzić tekst przed wysłaniem.
Footnotes
-
Na potrzeby własnych kalkulatorów: Bird mierzy GSM-7 w septetach, a
UCS2w jednostkach kodowych UTF-16. Znaki rozszerzone GSM-7 zajmują dwa septety. UTF-16 używa dwóch jednostek kodowych dla znaków spoza pierwszego bloku Unicode, w tym😀. ↩
W skrócie
Treść wiadomości determinuje kodowanie.
Bird używa GSM-7, gdy każdy znak mieści się w jego alfabecie, i UCS-2, gdy którykolwiek znak wykracza poza niego.
Niektóre znaki liczone są podwójnie.
Zwykły tekst łaciński mieści 160 znaków w segmencie. Szerszy alfabet mieści 70, a niektóre emoji liczone są podwójnie.
Podział zmniejsza pojemność każdej części.
Wiadomości wieloczęściowe rezerwują miejsce na nagłówek. Zwykły tekst łaciński mieści wtedy 153 znaki na część. Szerszy alfabet mieści 67, licząc niektóre znaki podwójnie.
Smart encoding wymaga jawnego wyboru.
Bird zastępuje obsługiwane znaki tylko wtedy, gdy włączysz tę opcję i cały wynik mieści się w GSM-7.