BroadNet
Codifica SMSCodifica dati

Il data coding scheme (DCS)

Aggiornato il 3 min di letturaBasato su standard
Risposta diretta

Il data coding scheme (DCS) è un campo di un ottetto — data_coding in SMPP, TP-DCS in GSM — che indica alla rete come è codificato il body del messaggio e, opzionalmente, la sua classe. I tre valori che contano sono 0x00 (GSM-7 predefinito), 0x04 (binario a 8 bit) e 0x08 (UCS-2/Unicode). I gruppi di codifica superiori aggiungono il comportamento di classe di messaggio e flash.

§01

I tre valori di uso quotidiano

Per quasi tutto il traffico di testo A2P, il DCS è uno di tre valori. 0x00 seleziona l'alfabeto predefinito GSM-7. 0x04 seleziona il binario a 8 bit (usato per OTA, WAP push e altri payload di dati, non per testo umano). 0x08 seleziona UCS-2 per Unicode. Impostare il valore errato causa mojibake e segmentazione errata, quindi deve corrispondere a come avete effettivamente codificato short_message.

Valori comuni di data_coding / DCS
ValoreCodificaUtilizzo
0x00Alfabeto predefinito GSM-7SMS standard con testo latino
0x01IA5 / ASCIIUsato raramente
0x03Latin-1 (ISO-8859-1)Alcune rotte dell'Europa occidentale
0x04Binario a 8 bitPayload binari / OTA / WAP push
0x08UCS-2 (UTF-16BE)Unicode / non latini / emoji
§02

I gruppi di codifica di GSM 03.38

L'ottetto DCS non è un'enumerazione piatta — il suo nibble alto seleziona un gruppo di codifica che reinterpreta i bit bassi. Il gruppo di codifica dati generale (0x0X) trasporta un indicatore di alfabeto (bit 3-2: 00 = GSM-7, 01 = 8-bit, 10 = UCS-2) e un flag opzionale di compressione e classe. Il gruppo codifica-dati/classe-messaggio (0xFX) è usato per i messaggi 'flash' a visualizzazione immediata.

Struttura dei gruppi di codifica DCS (selezione)
Nibble altoGruppoSignificato dei bit bassi
0x0XCodifica dei dati generaliAlfabeto (GSM-7/8 bit/UCS-2), compressione, flag di classe
0x1XGenerale, classe presenteCome sopra con la classe del messaggio nei bit 1-0
0xCXMessaggio in attesa — scartaGruppi di segreteria telefonica/indicatori
0xDX / 0xEXMessaggio in attesa — memorizzaGruppi di indicatori GSM-7 / UCS-2
0xFXCodifica dei dati / classe di messaggioAlfabeto nel bit 2, classe nei bit 1-0 (flash = classe 0)
§03

Classi di messaggio

Quando il DCS indica una classe di messaggio, i bit 1-0 selezionano dove atterra il messaggio. La classe 0 è un SMS 'flash' mostrato immediatamente sullo schermo senza essere memorizzato. La classe 1 è destinata al terminale (ME), la classe 2 alla SIM (SIM Toolkit / OTA) e la classe 3 all'apparecchiatura terminale esterna. La maggior parte del testo A2P non porta alcuna classe; il flash (classe 0, ad esempio DCS 0xF0 per GSM-7) è usato per gli avvisi che devono comparire istantaneamente.

Classi di messaggio SMS
ClasseDestinazioneComportamento
Class 0SchermoFlash: visualizzato immediatamente, non memorizzato automaticamente
Class 1Apparecchiatura mobile (ME)Memorizzato nella memoria del telefono
Class 2SIMSIM Toolkit / Provisioning OTA
Class 3Apparecchiatura terminale (TE)Inoltrato ad apparecchiature esterne
FAQ

Domande frequenti

Che cos'è il data coding scheme negli SMS?

È un campo di un ottetto (data_coding in SMPP, TP-DCS in GSM) che indica alla rete come è codificato il body del messaggio — GSM-7, 8-bit o UCS-2 — e opzionalmente la sua classe. Deve corrispondere a come è stato effettivamente codificato il payload.

Quale valore di data_coding uso per GSM-7 e per Unicode?

Usate 0x00 per il testo con alfabeto predefinito GSM-7 e 0x08 per UCS-2 Unicode. Usate 0x04 solo per payload binari a 8 bit come OTA o WAP push, mai per testo leggibile dall'utente.

Che cos'è un SMS flash?

Un SMS flash è un messaggio di classe 0 che compare immediatamente sullo schermo del destinatario senza essere salvato nella posta in arrivo. Si imposta tramite i bit di classe di messaggio del DCS (ad esempio 0xF0 per il flash GSM-7).

Perché il mio messaggio è arrivato con caratteri illeggibili?

Quasi sempre per una discrepanza nel DCS: il valore di data_coding non corrispondeva alla codifica effettiva di short_message. Ad esempio, inviare byte UTF-16 con data_coding 0x00 (GSM-7) produce mojibake. Impostate data_coding in modo che corrisponda ai byte che inviate.

Riferimenti

Specifiche della fonte

Gli standard pubblicati su cui si basa questa pagina. Si apre in una nuova scheda.

BNGestito dal team di ingegneri BroadNet·Servizi di messaggistica di livello carrier dal 2003
Mettilo sul filo

Realizzato con un vero binding SMPP e un'API REST.

Richiedi l'accesso di prova con chiavi di test reali: invia prima al tuo numero verificato, poi passa alla produzione in oltre 200 paesi una volta approvata l'identità del mittente e i percorsi.