SMS

Wat is GSM-7- vs UCS-2-encoding?

GSM-7 past meer tekst per segment dankzij een beperkt alfabet; UCS-2 ondersteunt meer tekens maar laat minder ruimte per segment.

Een gekrulde apostrof kan de prijs veranderen van een tekst die verder alleen gewone Latijnse letters bevat. De telefoon toont vrijwel dezelfde zin. Bird heeft meer netwerksegmenten nodig om het te versturen.

Wat zijn de twee encodings?

GSM-7 gebruikt een compact alfabet, terwijl UCS-2 tekens buiten dat alfabet vertegenwoordigt.

Gewone Latijnse letters, cijfers, gangbare leestekens en enkele letters met accenten passen in GSM-7. De SMS-alfabetspecificatie definieert die set.

UCS-2 bevat tekens buiten die set, waaronder gekrulde aanhalingstekens en emoji. Sommige emoji tellen dubbel voor de tekenlimiet.

Chinese, Japanse, Koreaanse, Cyrillische, Arabische, Thaise en Hindi-tekst vereisen tekens buiten het GSM-7-alfabet van Bird.

Hoe kiest Bird de encoding?

Bird toetst de hele berichttekst aan GSM-7 en gebruikt UCS-2 als een teken niet door die toets komt.

De encoding geldt voor de hele berichttekst. Een gekrulde apostrof krijgt geen aparte encoding ten opzichte van de woorden eromheen. De aanwezigheid ervan verandert ook de encoding van die woorden.

Je kunt het resultaat controleren via segments.encoding, met de waarden GSM_7BIT en UCS2.

Hoe verandert encoding het aantal segmenten?

De bredere encoding laat minder ruimte voor tekst in elk factureerbaar segment.

Bird hanteert deze limieten:

EncodingEnkel segmentElk deel bij opsplitsing
GSM-7160 tekens153 tekens
UCS-270 tekens67 tekens

Deze limieten tellen bepaalde tekens dubbel, zoals hieronder vermeld. Elk opgesplitst deel reserveert headerruimte zodat de telefoon de delen kan samenvoegen. Concatenated SMS legt de header uit.

Een berichttekst van 155 gewone Latijnse letters beslaat één GSM-7-segment. Voeg een gekrulde apostrof toe en de berichttekst van 156 tekens schakelt over naar UCS-2. Die overschrijdt 70, dus de meerdelige limiet geldt: 156 gedeeld door 67 wordt naar boven afgerond tot drie segmenten.

Bird factureert elk segment apart. SMS segments legt uit hoe het aantal segmenten het factureerbare aantal wordt.

Welke tekens vragen extra aandacht?

Gekrulde leestekens, emoji en letters buiten het GSM-7-alfabet kunnen de encoding van het hele bericht veranderen.

  • Rechte apostroffen passen in GSM-7; gekrulde apostroffen niet.
  • Een gewoon koppelteken past; typografische gedachtestrepen niet.
  • Drie punten passen; het enkele beletselteken niet.
  • é en ü passen; á, í en ú niet.

GSM-7 telt deze tekens dubbel: ^, {, }, \, [, ], ~, | en . Form feed, een stuurteken dat een pagina-einde aanvraagt, telt ook dubbel. Tachtig eurotekens vullen daardoor één segment.

In UCS-2 telt een emoji zoals 😀 dubbel. Vijfendertig vullen één segment. Eentje extra overschrijdt de capaciteit.1

Kan smart encoding de omschakeling voorkomen?

Smart encoding kan ondersteunde leestekens vervangen wanneer elk resultaat in GSM-7 past.

Je schakelt het per verzending in met options.smart_encoding, een boolean die true of false accepteert, met false als standaard. Een gekrulde apostrof kan een rechte apostrof worden. Een beletselteken kan drie punten worden.

Bird laat de oorspronkelijke berichttekst ongewijzigd als er een niet-ondersteund teken overblijft. Arabische of Japanse tekst behoudt daarom de Unicode-capaciteitslimieten. Het wijzigen van de instelling kan die schriften niet in GSM-7 laten passen.

Smart encoding beschrijft de vervangingsregels en de segmentcalculator controleert tekst voordat je verzendt.

Footnotes

  1. Voor eigen calculators meet Bird GSM-7 in septets en UCS2 in UTF-16 code units. GSM-7-extensietekens gebruiken twee septets. UTF-16 gebruikt twee code units voor tekens buiten Unicodes eerste blok, waaronder 😀.

Kort gezegd

  1. De berichttekst bepaalt de encoding.

    Bird gebruikt GSM-7 wanneer elk teken in het alfabet past en UCS-2 wanneer een teken erbuiten valt.

  2. Sommige tekens tellen dubbel.

    Gewone Latijnse tekst past met 160 tekens in één segment. Het bredere alfabet past 70 tekens, waarbij sommige emoji dubbel tellen.

  3. Opsplitsen verkleint de capaciteit van elk deel.

    Meerdelige berichten reserveren ruimte voor een header. Gewone Latijnse tekst past dan met 153 tekens per deel. Het bredere alfabet past 67 tekens, waarbij sommige tekens dubbel tellen.

  4. Smart encoding vereist een expliciete keuze.

    Bird vervangt ondersteunde tekens alleen als je de optie inschakelt en het volledige resultaat in GSM-7 past.

Bouw op hetzelfde netwerk.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra u een betaalmethode toevoegt en een afzender verifieert.

Jouw volgende idee.
Klaar om te verbinden.