# Data Coding Scheme

Data Coding Scheme is a one-octet field in Short Messages (SM) and Cell Broadcast Messages (CB) which carries a basic information how the recipient handset should process the received message. The information includes:
* the character set or message coding, which determines the encoding of the message user data
* the message class, which determines to which component of the Mobile Station (MS) or User Equipment (UE) the message should be delivered
* the request to automatically delete the message after reading
* the state of flags indicating presence of unread voicemail, fax, e-mail or other messages
* the indication that the message content is compressed
* the language of the cell broadcast message
The field is described in 3GPP 23.040 and 3GPP 23.038 under the name TP-DCS.

## Message character sets

A special 7-bit encoding called the GSM 7 bit default alphabet was designed for the Short Message System in GSM. The alphabet contains the most-often used symbols from most Western-European languages (and some Greek uppercase letters). Some ASCII characters and the Euro sign did not fit into the GSM 7-bit default alphabet and must be encoded using two septets. These characters form GSM 7 bit default alphabet extension table. Support of the GSM 7-bit alphabet is mandatory for GSM handsets and network elements.
Languages which use Latin script, but use characters which are not present in the GSM 7-bit default alphabet, often replace missing characters with diacritic marks with corresponding characters without diacritics, which causes not entirely satisfactory user experience, but is often accepted. In order to include these missing characters the 16-bit UTF-16 (in GSM called UCS-2) encoding may be used at the price of reducing the length of a (non-segmented) message from 160 to 70 characters.
The messages in Chinese, Korean or Japanese languages must be encoded using the UTF-16 character encoding. The same was also true for other languages using non-Latin scripts like Russian, Arabic, Hebrew and various Indian languages. In 3GPP TS 23.038 8.0.0 published in 2008 a new feature, an extended National language shift table was introduced, which in the version 11.0.0 published in 2012 covers Turkish, Spanish, Portuguese, Bengali, Gujarati, Hindi, Kannada, Malayalam, Oriya, Punjabi, Tamil, Telugu and Urdu languages. The mechanism replaces GSM 7-bit default alphabet code table and/or extended table with a national table(s) according to special information elements in User Data Header. The non-segmented message using national language shift table(s) may carry up to 155 (or 153) 7-bit characters.
GSM recognizes only two encodings for text messages and one encoding for binary messages:
* GSM 7-bit default alphabet (which includes using of National language shift tables as well)
* UCS-2
* 8-bit data

## Message classes

The TP-DCS octet has a complex syntax to allow carrying of other information; the most notable are message classes:
Message Classes :
| Value | Message Class |
| 0 0 | 0 - Flash messages |
| 0 1 | 1 - ME-specific |
| 1 0 | 2 - SIM / USIM specific |
| 1 1 | 3 - TE-specific |
Flash messages are received by a mobile phone even though it has full memory. They are not stored in the phone, they just displayed on the phone display.

## Other features
### Automatic deletion after reading

The handset should delete any message received with a TP-DCS value falling to the "Message Marked for Automatic Deletion Coding Group" after user has read it.

### Message waiting indication

Message Waiting Indication group of DCS values serves to set or reset flags indicating presence of unread voicemail, fax, e-mail or other messages.

### Data compression

A special DCS value also allows message compression, but it perhaps is not used by any operator.

## DCS values
### SMS data coding scheme

The values of TP-DCS are defined in GSM recommendation 03.38.
Coding Group: General Data Coding :
| DCS hex dec | DCS hex dec | Character Set | Message Class | Compressed | Reserved Because |
| 00 | 0 | GSM 7 bit | Default | - | |
| 01 | 1 | GSM 7 bit | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 02 | 2 | GSM 7 bit | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 03 | 3 | GSM 7 bit | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 04 | 4 | 8 bit data | Default | - | |
| 05 | 5 | 8 bit data | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 06 | 6 | 8 bit data | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 07 | 7 | 8 bit data | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 08 | 8 | UCS2 | Default | - | |
| 09 | 9 | UCS2 | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 0A | 10 | UCS2 | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 0B | 11 | UCS2 | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 0C | 12 | (reserved) | Default | - | Reserved character set |
| 0D | 13 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 0E | 14 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 2 but no message class present |
| 0F | 15 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 3 but no message class present |
| 10 | 16 | GSM 7 bit | Class 0 (Flash message) | - | |
| 11 | 17 | GSM 7 bit | Class 1 (ME-specific) | - | |
| 12 | 18 | GSM 7 bit | Class 2 (SIM/USIM-specific) | - | |
| 13 | 19 | GSM 7 bit | Class 3 (TE-specific) | - | |
| 14 | 20 | 8 bit data | Class 0 (Flash message) | - | |
| 15 | 21 | 8 bit data | Class 1 (ME-specific) | - | |
| 16 | 22 | 8 bit data | Class 2 (SIM/USIM-specific) | - | |
| 17 | 23 | 8 bit data | Class 3 (TE-specific) | - | |
| 18 | 24 | UCS2 | Class 0 (Flash message) | - | |
| 19 | 25 | UCS2 | Class 1 (ME-specific) | - | |
| 1A | 26 | UCS2 | Class 2 (SIM/USIM-specific) | - | |
| 1B | 27 | UCS2 | Class 3 (TE-specific) | - | |
| 1C | 28 | (reserved) | Class 0 (Flash message) | - | Reserved character set |
| 1D | 29 | (reserved) | Class 1 (ME-specific) | - | Reserved character set |
| 1E | 30 | (reserved) | Class 2 (SIM/USIM-specific) | - | Reserved character set |
| 1F | 31 | (reserved) | Class 3 (TE-specific) | - | Reserved character set |
| 20 | 32 | GSM 7 bit | Default | + | |
| 21 | 33 | GSM 7 bit | Default | + | Bits 1 and 0 have value 1 but no message class present |
| 22 | 34 | GSM 7 bit | Default | + | Bits 1 and 0 have value 2 but no message class present |
| 23 | 35 | GSM 7 bit | Default | + | Bits 1 and 0 have value 3 but no message class present |
| 24 | 36 | 8 bit data | Default | + | Compression set but Character set can't be compressed |
| 25 | 37 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 1 but no message class present |
| 26 | 38 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 2 but no message class present |
| 27 | 39 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 3 but no message class present |
| 28 | 40 | UCS2 | Default | + | Compression set but Character set can't be compressed |
| 29 | 41 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 1 but no message class present |
| 2A | 42 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 2 but no message class present |
| 2B | 43 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 3 but no message class present |
| 2C | 44 | (reserved) | Default | + | Reserved character set |
| 2D | 45 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 2E | 46 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 2F | 47 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 30 | 48 | GSM 7 bit | Class 0 (Flash message) | + | |
| 31 | 49 | GSM 7 bit | Class 1 (ME-specific) | + | |
| 32 | 50 | GSM 7 bit | Class 2 (SIM/USIM-specific) | + | |
| 33 | 51 | GSM 7 bit | Class 3 (TE-specific) | + | |
| 34 | 52 | 8 bit data | Class 0 (Flash message) | + | Compression set but Character set can't be compressed |
| 35 | 53 | 8 bit data | Class 1 (ME-specific) | + | Compression set but Character set can't be compressed |
| 36 | 54 | 8 bit data | Class 2 (SIM/USIM-specific) | + | Compression set but Character set can't be compressed |
| 37 | 55 | 8 bit data | Class 3 (TE-specific) | + | Compression set but Character set can't be compressed |
| 38 | 56 | UCS2 | Class 0 (Flash message) | + | Compression set but Character set can't be compressed |
| 39 | 57 | UCS2 | Class 1 (ME-specific) | + | Compression set but Character set can't be compressed |
| 3A | 58 | UCS2 | Class 2 (SIM/USIM-specific) | + | Compression set but Character set can't be compressed |
| 3B | 59 | UCS2 | Class 3 (TE-specific) | + | Compression set but Character set can't be compressed |
| 3C | 60 | (reserved) | Class 0 (Flash message) | + | Reserved character set |
| 3D | 61 | (reserved) | Class 1 (ME-specific) | + | Reserved character set |
| 3E | 62 | (reserved) | Class 2 (SIM/USIM-specific) | + | Reserved character set |
| 3F | 63 | (reserved) | Class 3 (TE-specific) | + | Reserved character set |
| Coding Group: Message Marked for Automatic Deletion ||||||
| DCS hex dec | DCS hex dec | Character Set | Message Class | Compressed | Reserved Because |
| 40 | 64 | GSM 7 bit | Default | - | |
| 41 | 65 | GSM 7 bit | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 42 | 66 | GSM 7 bit | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 43 | 67 | GSM 7 bit | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 44 | 68 | 8 bit data | Default | - | |
| 45 | 69 | 8 bit data | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 46 | 70 | 8 bit data | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 47 | 71 | 8 bit data | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 48 | 72 | UCS2 | Default | - | |
| 49 | 73 | UCS2 | Default | - | Bits 1 and 0 have value 1 but no message class present |
| 4A | 74 | UCS2 | Default | - | Bits 1 and 0 have value 2 but no message class present |
| 4B | 75 | UCS2 | Default | - | Bits 1 and 0 have value 3 but no message class present |
| 4C | 76 | (reserved) | Default | - | Reserved character set |
| 4D | 77 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 4E | 78 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 2 but no message class present |
| 4F | 79 | (reserved) | Default | - | Reserved character set Bits 1 and 0 have value 3 but no message class present |
| 50 | 80 | GSM 7 bit | Class 0 (Flash message) | - | |
| 51 | 81 | GSM 7 bit | Class 1 (ME-specific) | - | |
| 52 | 82 | GSM 7 bit | Class 2 (SIM/USIM-specific) | - | |
| 53 | 83 | GSM 7 bit | Class 3 (TE-specific) | - | |
| 54 | 84 | 8 bit data | Class 0 (Flash message) | - | |
| 55 | 85 | 8 bit data | Class 1 (ME-specific) | - | |
| 56 | 86 | 8 bit data | Class 2 (SIM/USIM-specific) | - | |
| 57 | 87 | 8 bit data | Class 3 (TE-specific) | - | |
| 58 | 88 | UCS2 | Class 0 (Flash message) | - | |
| 59 | 89 | UCS2 | Class 1 (ME-specific) | - | |
| 5A | 90 | UCS2 | Class 2 (SIM/USIM-specific) | - | |
| 5B | 91 | UCS2 | Class 3 (TE-specific) | - | |
| 5C | 92 | (reserved) | Class 0 (Flash message) | - | Reserved character set |
| 5D | 93 | (reserved) | Class 1 (ME-specific) | - | Reserved character set |
| 5E | 94 | (reserved) | Class 2 (SIM/USIM-specific) | - | Reserved character set |
| 5F | 95 | (reserved) | Class 3 (TE-specific) | - | Reserved character set |
| 60 | 96 | GSM 7 bit | Default | + | |
| 61 | 97 | GSM 7 bit | Default | + | Bits 1 and 0 have value 1 but no message class present |
| 62 | 98 | GSM 7 bit | Default | + | Bits 1 and 0 have value 2 but no message class present |
| 63 | 99 | GSM 7 bit | Default | + | Bits 1 and 0 have value 3 but no message class present |
| 64 | 100 | 8 bit data | Default | + | Compression set but Character set can't be compressed |
| 65 | 101 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 1 but no message class present |
| 66 | 102 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 2 but no message class present |
| 67 | 103 | 8 bit data | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 3 but no message class present |
| 68 | 104 | UCS2 | Default | + | Compression set but Character set can't be compressed |
| 69 | 105 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 1 but no message class present |
| 6A | 106 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 2 but no message class present |
| 6B | 107 | UCS2 | Default | + | Compression set but Character set can't be compressed Bits 1 and 0 have value 3 but no message class present |
| 6C | 108 | (reserved) | Default | + | Reserved character set |
| 6D | 109 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 1 but no message class present |
| 6E | 110 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 2 but no message class present |
| 6F | 111 | (reserved) | Default | + | Reserved character set Bits 1 and 0 have value 3 but no message class present |
| 70 | 112 | GSM 7 bit | Class 0 (Flash message) | + | |
| 71 | 113 | GSM 7 bit | Class 1 (ME-specific) | + | |
| 72 | 114 | GSM 7 bit | Class 2 (SIM/USIM-specific) | + | |
| 73 | 115 | GSM 7 bit | Class 3 (TE-specific) | + | |
| 74 | 116 | 8 bit data | Class 0 (Flash message) | + | Compression set but Character set can't be compressed |
| 75 | 117 | 8 bit data | Class 1 (ME-specific) | + | Compression set but Character set can't be compressed |
| 76 | 118 | 8 bit data | Class 2 (SIM/USIM-specific) | + | Compression set but Character set can't be compressed |
| 77 | 119 | 8 bit data | Class 3 (TE-specific) | + | Compression set but Character set can't be compressed |
| 78 | 120 | UCS2 | Class 0 (Flash message) | + | Compression set but Character set can't be compressed |
| 79 | 121 | UCS2 | Class 1 (ME-specific) | + | Compression set but Character set can't be compressed |
| 7A | 122 | UCS2 | Class 2 (SIM/USIM-specific) | + | Compression set but Character set can't be compressed |
| 7B | 123 | UCS2 | Class 3 (TE-specific) | + | Compression set but Character set can't be compressed |
| 7C | 124 | (reserved) | Class 0 (Flash message) | + | Reserved character set |
| 7D | 125 | (reserved) | Class 1 (ME-specific) | + | Reserved character set |
| 7E | 126 | (reserved) | Class 2 (SIM/USIM-specific) | + | Reserved character set |
| 7F | 127 | (reserved) | Class 3 (TE-specific) | + | Reserved character set |
| Coding Group: Reserved ||||||
| DCS hex dec | DCS hex dec | Character Set | Message Class | Compressed | Reserved Because |
| 80 | 128 | (not defined) | Default | - | Reserved coding group |
| ... up to ... ||||||
| BF | 191 | (not defined) | Default | - | Reserved coding group |
| Coding Group: Message Waiting Info: Discard Message ||||||
| DCS hex dec | DCS hex dec | Character Set | Message Waiting Information | Compressed | Reserved Because |
| C0 | 192 | (not defined) | Voicemail Inactive | - | |
| C1 | 193 | (not defined) | Fax Inactive | - | |
| C2 | 194 | (not defined) | E-mail Inactive | - | |
| C3 | 195 | (not defined) | Other Inactive | - | |
| C4 | 196 | (not defined) | Voicemail Inactive | - | Value of bit 2 |
| C5 | 197 | (not defined) | Fax Inactive | - | Value of bit 2 |
| C6 | 198 | (not defined) | E-mail Inactive | - | Value of bit 2 |
| C7 | 199 | (not defined) | Other Inactive | - | Value of bit 2 |
| C8 | 200 | (not defined) | Voicemail Active | - | |
| C9 | 201 | (not defined) | Fax Active | - | |
| CA | 202 | (not defined) | E-mail Active | - | |
| CB | 203 | (not defined) | Other Active | - | |
| CC | 204 | (not defined) | Voicemail Active | - | Value of bit 2 |
| CD | 205 | (not defined) | Fax Active | - | Value of bit 2 |
| CE | 206 | (not defined) | E-mail Active | - | Value of bit 2 |
| CF | 207 | (not defined) | Other Active | - | Value of bit 2 |
| Coding Group: Message Waiting Info: Store Message ||||||
| DCS hex dec | DCS hex dec | Character Set | Message Waiting Information | Compressed | Reserved Because |
| D0 | 208 | GSM 7 bit | Voicemail Inactive | - | |
| D1 | 209 | GSM 7 bit | Fax Inactive | - | |
| D2 | 210 | GSM 7 bit | E-mail Inactive | - | |
| D3 | 211 | GSM 7 bit | Other Inactive | - | |
| D4 | 212 | GSM 7 bit | Voicemail Inactive | - | Value of bit 2 |
| D5 | 213 | GSM 7 bit | Fax Inactive | - | Value of bit 2 |
| D6 | 214 | GSM 7 bit | E-mail Inactive | - | Value of bit 2 |
| D7 | 215 | GSM 7 bit | Other Inactive | - | Value of bit 2 |
| D8 | 216 | GSM 7 bit | Voicemail Active | - | |
| D9 | 217 | GSM 7 bit | Fax Active | - | |
| DA | 218 | GSM 7 bit | E-mail Active | - | |
| DB | 219 | GSM 7 bit | Other Active | - | |
| DC | 220 | GSM 7 bit | Voicemail Active | - | Value of bit 2 |
| DD | 221 | GSM 7 bit | Fax Active | - | Value of bit 2 |
| DE | 222 | GSM 7 bit | E-mail Active | - | Value of bit 2 |
| DF | 223 | GSM 7 bit | Other Active | - | Value of bit 2 |
| E0 | 224 | UCS2 | Voicemail Inactive | - | |
| E1 | 225 | UCS2 | Fax Inactive | - | |
| E2 | 226 | UCS2 | E-mail Inactive | - | |
| E3 | 227 | UCS2 | Other Inactive | - | |
| E4 | 228 | UCS2 | Voicemail Inactive | - | Value of bit 2 |
| E5 | 229 | UCS2 | Fax Inactive | - | Value of bit 2 |
| E6 | 230 | UCS2 | E-mail Inactive | - | Value of bit 2 |
| E7 | 231 | UCS2 | Other Inactive | - | Value of bit 2 |
| E8 | 232 | UCS2 | Voicemail Active | - | |
| E9 | 233 | UCS2 | Fax Active | - | |
| EA | 234 | UCS2 | E-mail Active | - | |
| EB | 235 | UCS2 | Other Active | - | |
| EC | 236 | UCS2 | Voicemail Active | - | Value of bit 2 |
| ED | 237 | UCS2 | Fax Active | - | Value of bit 2 |
| EE | 238 | UCS2 | E-mail Active | - | Value of bit 2 |
| EF | 239 | UCS2 | Other Active | - | Value of bit 2 |
| Coding Group: Data Coding/Message Class ||||||
| DCS hex dec | DCS hex dec | Character Set | Message Class | Compressed | Reserved Because |
| F0 | 240 | GSM 7 bit | Class 0 (Flash message) | - | |
| F1 | 241 | GSM 7 bit | Class 1 (ME-specific) | - | |
| F2 | 242 | GSM 7 bit | Class 2 (SIM/USIM-specific) | - | |
| F3 | 243 | GSM 7 bit | Class 3 (TE-specific) | - | |
| F4 | 244 | 8 bit data | Class 0 (Flash message) | - | |
| F5 | 245 | 8 bit data | Class 1 (ME-specific) | - | |
| F6 | 246 | 8 bit data | Class 2 (SIM/USIM-specific) | - | |
| F7 | 247 | 8 bit data | Class 3 (TE-specific) | - | |
| F8 | 248 | GSM 7 bit | Class 0 (Flash message) | - | Value of bit 3 |
| F9 | 249 | GSM 7 bit | Class 1 (ME-specific) | - | Value of bit 3 |
| FA | 250 | GSM 7 bit | Class 2 (SIM/USIM-specific) | - | Value of bit 3 |
| FB | 251 | GSM 7 bit | Class 3 (TE-specific) | - | Value of bit 3 |
| FC | 252 | 8 bit data | Class 0 (Flash message) | - | Value of bit 3 |
| FD | 253 | 8 bit data | Class 1 (ME-specific) | - | Value of bit 3 |
| FE | 254 | 8 bit data | Class 2 (SIM/USIM-specific) | - | Value of bit 3 |
| FF | 255 | 8 bit data | Class 3 (TE-specific) | - | Value of bit 3 |
iDEN mobile standard uses values F7$_{16}$ and F8$_{16}$ in a special way.

### CBS data coding scheme

For the DCS values in Cell Broadcast Messages see GSM recommendation 03.38.