# Il data coding scheme (DCS)

> 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.

- URL canonico: https://www.broadnet.me/it/reference/data-coding-scheme-dcs
- Lingua: it
- Ultimo aggiornamento: 2026-07-18
- Editore: BroadNet (https://www.broadnet.me)

Il byte data-coding scheme che indica alla rete come è codificato un SMS: GSM-7 (0x00), 8-bit (0x04), UCS-2 (0x08), più le classi di messaggio (0/flash fino a 3/SIM) di GSM 03.38.

## 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*

| Valore | Codifica | Utilizzo |
|---|---|---|
| 0x00 | Alfabeto predefinito GSM-7 | SMS standard con testo latino |
| 0x01 | IA5 / ASCII | Usato raramente |
| 0x03 | Latin-1 (ISO-8859-1) | Alcune rotte dell'Europa occidentale |
| 0x04 | Binario a 8 bit | Payload binari / OTA / WAP push |
| 0x08 | UCS-2 (UTF-16BE) | Unicode / non latini / emoji |

## 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 alto | Gruppo | Significato dei bit bassi |
|---|---|---|
| 0x0X | Codifica dei dati generali | Alfabeto (GSM-7/8 bit/UCS-2), compressione, flag di classe |
| 0x1X | Generale, classe presente | Come sopra con la classe del messaggio nei bit 1-0 |
| 0xCX | Messaggio in attesa — scarta | Gruppi di segreteria telefonica/indicatori |
| 0xDX / 0xEX | Messaggio in attesa — memorizza | Gruppi di indicatori GSM-7 / UCS-2 |
| 0xFX | Codifica dei dati / classe di messaggio | Alfabeto nel bit 2, classe nei bit 1-0 (flash = classe 0) |

## 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*

| Classe | Destinazione | Comportamento |
|---|---|---|
| Class 0 | Schermo | Flash: visualizzato immediatamente, non memorizzato automaticamente |
| Class 1 | Apparecchiatura mobile (ME) | Memorizzato nella memoria del telefono |
| Class 2 | SIM | SIM Toolkit / Provisioning OTA |
| Class 3 | Apparecchiatura terminale (TE) | Inoltrato ad apparecchiature esterne |

## 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.

## Fonti

- [3GPP TS 23.038 — data coding scheme (§4)](https://www.3gpp.org/dynareport/23038.htm)
- [SMPP v3.4 specification — data_coding](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

## Correlati

- [Il set di caratteri GSM-7](https://www.broadnet.me/it/reference/gsm7-character-set)
- [UCS-2 e SMS Unicode](https://www.broadnet.me/it/reference/ucs2-unicode-sms)
- [Riferimento submit_sm di SMPP](https://www.broadnet.me/it/reference/smpp-submit-sm)
- [Calcolatore di segmenti SMS (strumento gratuito)](https://www.broadnet.me/it/tools/sms-segment-calculator)
- [Prodotto SMS A2P](https://www.broadnet.me/it/products/a2p-sms)
