GSM 03.38

In mobile telephony GSM 03.38 or 3GPP 23.038 is a character encoding used in GSM networks for SMS (Short Message Service), CB (Cell Broadcast) and USSD (Unstructured Supplementary Service Data). The 3GPP TS 23.038 standard (originally GSM recommendation 03.38) defines GSM 7-bit default alphabet which is mandatory for GSM handsets and network elements[1], but the character set is suitable only for English and a number of Western-European languages. Languages such as Chinese, Korean or Japanese must be transferred using the 16-bit UCS-2 character encoding. A limited number of languages, like Portuguese, Spanish, Turkish and a number of languages used in India written with a Brahmic scripts may use 7-bit encoding with national language shift table defined in 3GPP 23.038. For binary messages, 8-bit encoding is used.

GSM 7-bit default alphabet and extension table of 3GPP TS 23.038 / GSM 03.38

The standard encoding for GSM messages is the 7-bit default alphabet as defined in the 23.038 recommendation.

Seven-bit characters must be encoded into octets following one of three packing modes:

  • CBS: using this encoding, it is possible to send up to 93 characters (packed in up to 82 octets) in one SMS message in a Cell Broadcast Service.
  • SMS: using this encoding, it is possible to send up to 160 characters (packed in up to 140 octets) in one SMS message in the GSM network.
  • USSD: using this encoding, it is possible to send up to 182 characters (packed in up to 160 octets) in one SMS message of Unstructured Supplementary Service Data.
Basic Character Set[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ Δ SP 0 ¡ P ¿ p
0x01 £ _ ! 1 A Q a q
0x02 $ Φ " 2 B R b r
0x03 ¥ Γ # 3 C S c s
0x04 è Λ ¤ 4 D T d t
0x05 é Ω % 5 E U e u
0x06 ù Π & 6 F V f v
0x07 ì Ψ ' 7 G W g w
0x08 ò Σ ( 8 H X h x
0x09 Ç Θ ) 9 I Y i y
0x0A LF Ξ * : J Z j z
0x0B Ø ESC + ; K Ä k ä
0x0C ø Æ , < L Ö l ö
0x0D CR æ - = M Ñ m ñ
0x0E Å ß . > N Ü n ü
0x0F å É / ? O § o à
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Basic Character Set Extension[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00         |      
0x01                
0x02                
0x03                
0x04   ^            
0x05              
0x06                
0x07                
0x08     {          
0x09     }          
0x0A FF              
0x0B   SS2            
0x0C       [        
0x0D CR2     ~        
0x0E       ]        
0x0F     \          
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Note that the second part of the table is only accessible if the GSM device supports the 7-bit extension mechanism, using the ESC character prefix. Otherwise, the ESC code itself is interpreted as a space, and the following character will be treated as if there was no leading ESC code.

Most of the high part of the table is not used in the default character set, but the GSM standard defines some language code indicators that allows the system to identify national variants of this part, to support more characters than those displayed in the above table.

In a standard GSM text message, all characters are encoded using 7-bit code units, packed together to fill all bits of octets. So, for example, the 140-octet envelope of an SMS,[3] with no other language indicator but only the standard class prefix, can transport up to (140*8)/7=160, that is 160 GSM 7-bit characters (but note that the ESC code counts for one of them, if characters in the high part of the table are used).

Longer messages may be sent, but will require a continuation prefix and a sequence number on subsequent SMS messages (these prefix bytes and sequence number are counted within the maximum length of the 140-octet payload of the envelope format).

When there are 1 to 6 spare bits in the last octet of a message, these bits are set to zero (these bits do not count as a character but only as a filler). When there are 7 spare bits in the last octet of a message, these bits are set to the 7-bit code of the CR control (also used as a padding filler) instead of being set to zero (where they would be confused with the 7-bit code of an '@' character).

This 7-bit encoding allows the transport of texts encoded in the Basic Latin subset of ASCII, as well as some characters of the ISO Latin 1 character set. It also allows the encoding of texts written in the Greek script, but only capitals; for such use in Greek, the Latin capital letters that look like the Greek letters are reused with the same code, so that the above character set is complete only for modern monotonic Greek restricted to capital letters. A complete support for the Greek alphabet (including small letters) requires a national version of the shifted 7-bit table (using the ESC code for each national character encoded in this shifted table), or an unspecified proprietary 8-bit encoding, or the use of the UCS-2 encoding (see below).

Note that the special code marked SS2 in the table above has also been assigned (and encoded as 0x1B,0x1B) to allow using another alternate 7-bit shift table. But this mechanism has never been used and the UCS-2 encoding has been preferred.

GSM 8-bit data encoding

8-bit data encoding mode treats the information as raw data. According to the standard, the alphabet for this encoding is user-specific.

UCS-2 Encoding

This encoding allows use of a greater range of characters and languages. UCS-2 can represent the most commonly used Latin and eastern characters at the cost of a greater space expense. Strictly speaking, UCS-2 is limited to characters in the Basic Multilingual Plane. However, since modern programming environments do not provide encoders or decoders for UCS-2, some cell phones (e.g. iPhones) use UTF-16 instead of UCS-2.[4] This works, because for characters in the Basic Multilingual Plane (including full alphabets of most modern human languages) UCS-2 and UTF-16 encodings are identical. To encode characters outside of the BMP (unreachable in plain UCS-2), such as emoticons, UTF-16 uses surrogate pairs, which when decoded with UCS-2 would appear as two valid but unmapped code points.

A single SMS GSM message using this encoding can have at most 70 characters (140 octets).

Note that on many GSM cell phones, there's no specific preselection of the UCS-2 encoding. The default is to use the 7-bit encoding described above, until one enters a character that is not present in the GSM 7-bit table (for example the lowercase 'a' with acute: 'á'). In that case, the whole message gets reencoded using the UCS-2 encoding, and the maximum length of the message sent in only 1 SMS is immediately reduced to 70 characters, instead of 160. On smartphones the message encoding depends on the SMS application used and its setting as well as on the length of the message. Some smartphones even send longer messages as a multimedia message (MMS).

To avoid unexpected costs for senders that have a subscription for a limited pack of sent SMS, smartphones should display the number of character used and the maximum number of characters in the composed SMS. When a message exceeds this maximum, the message will be sent as multiple successive SMS containing parts of the message (each one containing a sequence number, which also uses a few leading characters in each part); these parts will be reassembled later by the recipient.

Some GSM smartphones will alert the user about the number of SMS messages needed to send the message, when it requires more than one.

National language shift tables

Since release 8 of the 3GPP 23.038 standard of March 2008, additional characters sets can be accessed through the use of a National Language Shift Tables.

These tables allow using of different character sets according to the language the text is going to be written. The choice of table for a given message is selected in the User Data Header section of an SMS message and can be specified for the whole text (a Locking shift table replacing standard GSM 7-bit default alphabet table) or a single character (Single shift table replacing the GSM 7-bit default alphabet extension table). Locking and Single shift tables together in the same message are possible, if both standard default alphabet table and default alphabet extension table are to be replaced.

Using a shift table, a message can still use 7-bit encoding for the characters, but a different set can be chosen to correctly show accented and language specific characters. This allows up to 155 characters, encoded in 136 octets (140 octets, minus the 4-octets of User Data Header required to indicate the use of a shift table and the language code). With both Locking and Single shift tables, up to 150 characters are allowed, encoded in 132 octets (140 octets, minus two 4-octets User Data Headers).

Initially, shift tables only for Turkish were specified; Spanish and Portuguese were added in later revisions of release 8. Release 9 introduced 10 languages used in India written with a Brahmic scripts (Bengali, Gujarati, Hindi, Kannada, Malayalam, Oriya, Punjabi, Tamil, Telugu) and Urdu.

There is still no defined national language shift table for French, Greek, Russian, Bulgarian, Arabic, Hebrew and most Central European languages that need a better coverage than the default 7-bit standard character set and its default 7-bit extension character set: if ever any character is composed that cannot be represented in those default GSM 7-bit sets, the message will be automatically reencoded using UCS-2, with the effect of dividing by more than two the maximum length in characters of messages that can be sent at the price of a single SMS (when a message is split in multiple parts, a few other octets are needed in the User Data Header to indicate the sequence number of each part).

Although a revision of GSM 03.38 (as early as in version 4.0.1 of September 1994) has defined Data Coding Scheme values for Cell Broadcast System (CBS) for German, English, Italian, French, Spanish, Dutch, Swedish, Danish, Finnish, Norwegian, Greek and Turkish; with Hungarian, Polish, Czech, Hebrew, Arabic, Russian and Icelandic added in later revisions, no coding tables were defined for these languages. The purpose of this field was purely to identify the language of the message.

There's also no language shift table for Japanese written in basic kanas, or for Korean written in Hangul jamos, or for Chinese written in the Han script. This is often not a problem in Japan, because it uses other standards than GSM and WAP for messaging.

Spanish language (Latin script)

There's no specific Locking Shift Character Set for the Spanish language. Uses the default Basic Character Set.

Basic Character Set
by default
(No Locking Shift Table Defined for Spanish)[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ Δ SP 0 ¡ P ¿ p
0x01 £ _ ! 1 A Q a q
0x02 $ Φ " 2 B R b r
0x03 ¥ Γ # 3 C S c s
0x04 è Λ ¤ 4 D T d t
0x05 é Ω % 5 E U e u
0x06 ù Π & 6 F V f v
0x07 ì Ψ ' 7 G W g w
0x08 ò Σ ( 8 H X h x
0x09 Ç Θ ) 9 I Y i y
0x0A LF Ξ * : J Z j z
0x0B Ø ESC + ; K Ä k ä
0x0C ø Æ , < L Ö l ö
0x0D CR æ - = M Ñ m ñ
0x0E Å ß . > N Ü n ü
0x0F å É / ? O § o à
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Spanish language
UDH contains 0x24 0x01 0x02[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00         |      
0x01         Á   á  
0x02                
0x03                
0x04   ^            
0x05           Ú ú
0x06                
0x07                
0x08     {          
0x09 ç   }   Í   í  
0x0A FF              
0x0B   SS2            
0x0C       [        
0x0D CR2     ~        
0x0E       ]        
0x0F     \   Ó   ó  
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Portuguese language (Latin script)

Locking Shift Character Set
for Portuguese language
UDH contains 0x25 0x01 0x03[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ Δ SP 0 Í P ~ p
0x01 £ _ ! 1 A Q a q
0x02 $ ª " 2 B R b r
0x03 ¥ Ç # 3 C S c s
0x04 ê À º 4 D T d t
0x05 é % 5 E U e u
0x06 ú ^ & 6 F V f v
0x07 í \ ' 7 G W g w
0x08 ó ( 8 H X h x
0x09 ç Ó ) 9 I Y i y
0x0A LF | * : J Z j z
0x0B Ô ESC + ; K Ã k ã
0x0C ô Â , < L Õ l õ
0x0D CR â - = M Ú m `
0x0E Á Ê . > N Ü n ü
0x0F á É / ? O § o à
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Portuguese language
UDH contains 0x24 0x01 0x03[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00         |      
0x01         À   Â  
0x02   Φ            
0x03   Γ            
0x04   ^            
0x05 ê Ω       Ú ú
0x06   Π            
0x07   Ψ            
0x08   Σ {          
0x09 ç Θ }   Í   í  
0x0A FF              
0x0B Ô SS2       Ã   ã
0x0C ô     [   Õ   õ
0x0D CR2     ~        
0x0E Á     ]        
0x0F á Ê \   Ó   ó â
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Turkish language (Latin script)

Locking Shift Character Set
for Turkish language
UDH contains 0x25 0x01 0x01[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ Δ SP 0 İ P ç p
0x01 £ _ ! 1 A Q a q
0x02 $ Φ " 2 B R b r
0x03 ¥ Γ # 3 C S c s
0x04 Λ ¤ 4 D T d t
0x05 é Ω % 5 E U e u
0x06 ù Π & 6 F V f v
0x07 ı Ψ ' 7 G W g w
0x08 ò Σ ( 8 H X h x
0x09 Ç Θ ) 9 I Y i y
0x0A LF Ξ * : J Z j z
0x0B Ğ ESC + ; K Ä k ä
0x0C ğ Ş , < L Ö l ö
0x0D CR ş - = M Ñ m ñ
0x0E Å ß . > N Ü n ü
0x0F å É / ? O § o à
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Turkish language
UDH contains 0x24 0x01 0x01[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00         |      
0x01                
0x02                
0x03           Ş ç ş
0x04   ^            
0x05              
0x06                
0x07         Ğ   ğ  
0x08     {          
0x09     }   İ   ı  
0x0A FF              
0x0B   SS2            
0x0C       [        
0x0D CR2     ~        
0x0E       ]        
0x0F     \          
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Urdu language (Arabic and basic Latin scripts)

It may also be used for the Sindhi language also written in the Arabic script.

Sometimes it may be used for Arabic language as well, but the Eastern digits (encoded here in their Persian-Hindu variant) won't be used in that case because standard Arabic prefer its traditional Eastern Arabic digits, and will frequently be replaced by Western Arabic digits (encoded in the locking shift character set in column 0x30) which are also used now frequently in Urdu as well. However, in India, phones recognizing the Arabic language indication may substitute the Persian-Hindu variants of the Eastern Arabic digits by the traditional Eastern Arabic digits.

Locking Shift Character Set
for Urdu language
UDH contains 0x25 0x01 0x0D[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ا ث SP 0 ص ں ◌ٔ p
0x01 آ ج ! 1 ض ڻ a q
0x02 ب ځ ڏ 2 ط ڼ b r
0x03 ٻ ڄ ڍ 3 ظ و c s
0x04 ڀ ڃ ذ 4 ع ۄ d t
0x05 پ څ ر 5 ف ە e u
0x06 ڦ چ ڑ 6 ق ہ f v
0x07 ت ڇ ړ 7 ک ھ g w
0x08 ۂ ح ) 8 ڪ ء h x
0x09 ٿ خ ( 9 ګ ی i y
0x0A LF د ڙ : گ ې j z
0x0B ٹ ESC ز ; ڳ ے k ◌ٕ
0x0C ٽ ڌ , ښ ڱ ◌ٍ l ◌ّ
0x0D CR ڈ ږ س ل ◌ِ m ◌ٓ
0x0E ٺ ډ . ش م ◌ُ n ◌ٖ
0x0F ټ ڊ ژ ? ن ◌ٗ o ◌ٰ
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Urdu language
UDH contains 0x24 0x01 0x0D[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ < ۴ ◌ؓ | P    
0x01 £ = ۵ ◌ؔ A Q    
0x02 $ > ۶ ؛ B R    
0x03 ¥ ¡ ۷ ؟ C S    
0x04 ¿ ^ ۸ ـ D T    
0x05 " ¡ ۹ ◌ْ E U  
0x06 ¤ _ ، ◌٘ F V    
0x07 % # ؍ ٫ G W    
0x08 & * { ٬ H X    
0x09 ' ؀ } ٲ I Y    
0x0A FF ؁ ؎ ٳ J Z    
0x0B * SS2 ؏ ۍ K      
0x0C + ۰ ◌ؐ [ L      
0x0D CR2 ۱ ◌ؑ ~ M      
0x0E - ۲ ◌ؒ ] N      
0x0F / ۳ \ ۔ O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Hindi language (Devenagari and basic Latin scripts)

Locking Shift Character Set
for Hindi language
UDH contains 0x25 0x01 0x06[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ँ SP 0 ◌ा p
0x01 ◌ं ! 1 ◌ि a q
0x02 ◌ः 2 ◌ी b r
0x03 3 ◌ु c s
0x04 4 ◌ू d t
0x05 5 ◌ृ e u
0x06 6 ◌ॄ f v
0x07 7 ◌ॅ g w
0x08 ) 8 ◌ॆ h x
0x09 ( 9 ◌े i y
0x0A LF : ◌ै j z
0x0B ESC ; ◌ॉ k
0x0C , ◌ॊ l
0x0D CR ◌ो m
0x0E . ◌़ ◌ौ n
0x0F ? ◌् o ॿ
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Hindi language
UDH contains 0x24 0x01 0x06[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ < | P    
0x01 £ = A Q    
0x02 $ > B R    
0x03 ¥ ¡ C S    
0x04 ¿ ^ D T    
0x05 " ¡ E U  
0x06 ¤ _ ◌॑ F V    
0x07 % # ◌॒ ◌ॢ G W    
0x08 & * { ◌ॣ H X    
0x09 ' } I Y    
0x0A FF ◌॓ J Z    
0x0B * SS2 ◌॔   K      
0x0C + [ L      
0x0D CR2 ~ M      
0x0E - ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Bengali and Assamese languages (Bengali and basic Latin scripts)

Locking Shift Character Set
for Bengali and Assamese languages
UDH contains 0x25 0x01 0x04[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ঁ SP 0 ◌ব p
0x01 ◌ং   ! 1 ◌ি a q
0x02 ◌ঃ   2 ◌ী b r
0x03 3 ◌ু c s
0x04 4 ◌ূ d t
0x05 5   ◌ৃ e u
0x06 6 ◌ৄ f v
0x07 7     g w
0x08 ) 8     h x
0x09 ( 9   ◌ে i y
0x0A LF : ◌ৈ j z
0x0B ESC ;   k ◌ৗ
0x0C   ,     l
0x0D CR ◌ো m
0x0E   . ◌় ◌ৌ n
0x0F ? ◌্ o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Bengali and Assamese languages
UDH contains 0x24 0x01 0x04[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ < | P    
0x01 £ = A Q    
0x02 $ > B R    
0x03 ¥ ¡ C S    
0x04 ¿ ^ D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % # ◌ৢ   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF ◌ৣ   J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2 ~ M      
0x0E - ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Punjabi language (Gurmukhī and basic Latin scripts)

Locking Shift Character Set
for Punjabi language
UDH contains 0x25 0x01 0x0A[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ਁ SP 0 ◌ਾ ◌ੑ p
0x01 ◌ਂ   ! 1 ◌ਿ a q
0x02 ◌ਃ   2 ◌ੀ b r
0x03 3 ◌ੁ c s
0x04 4 ◌ੂ d t
0x05 5     e u
0x06 6   f v
0x07 7   g w
0x08 ) 8     h x
0x09   ( 9 ◌ੇ i y
0x0A LF : ◌ੈ j z
0x0B   ESC ;     k ◌ੰ
0x0C   ,     l ◌ੱ
0x0D CR ◌ੋ m
0x0E   . ◌਼ ◌ੌ n
0x0F ?   ◌੍ o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Punjabi language
UDH contains 0x24 0x01 0x0A[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ <   | P    
0x01 £ =   A Q    
0x02 $ >   B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF   J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2 ◌ੵ ~ M      
0x0E -   ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Gujarati language (Gujarati and basic Latin scripts)

Locking Shift Character Set
for Gujarati language
UDH contains 0x25 0x01 0x05[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ઁ SP 0 ◌ા p
0x01 ◌ં ! 1 ◌િ a q
0x02 ◌ઃ   2 ◌ી b r
0x03 3 ◌ુ c s
0x04 4 ◌ૂ d t
0x05 5   ◌ૃ e u
0x06 6 ◌ૄ f v
0x07 7 ◌ૅ g w
0x08 ) 8     h x
0x09 ( 9 ◌ે i y
0x0A LF : ◌ૈ j z
0x0B ESC ; ◌ૉ k
0x0C ,     l
0x0D CR ◌ો m ◌ૢ
0x0E   . ◌઼ ◌ૌ n ◌ૣ
0x0F ? ◌્ o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Gujarati language
UDH contains 0x24 0x01 0x05[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ <   | P    
0x01 £ =   A Q    
0x02 $ >   B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U  
0x06 ¤ _     F V    
0x07 % #     G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF     J Z    
0x0B * SS2     K      
0x0C +   [ L      
0x0D CR2   ~ M      
0x0E -   ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Oriya language (Oriya and basic Latin scripts)

Locking Shift Character Set
for Oriya language
UDH contains 0x25 0x01 0x09[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ଁ SP 0 ◌ା ◌ୖ p
0x01 ◌ଂ   ! 1 ◌ି a q
0x02 ◌ଃ   2 ◌ୀ b r
0x03 3 ◌ୁ c s
0x04 4 ◌ୂ d t
0x05 5   ◌ୃ e u
0x06 6 f v
0x07 7   g w
0x08 ) 8     h x
0x09 ( 9 ◌େ i y
0x0A LF : ◌ୈ j z
0x0B ESC ;   k ◌ୗ
0x0C   ,     l
0x0D CR ◌ୋ m
0x0E   . ◌଼ ◌ୌ n ◌ୢ
0x0F ? ◌୍ o ◌ୣ
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Oriya language
UDH contains 0x24 0x01 0x09[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ <   | P    
0x01 £ =   A Q    
0x02 $ >   B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF   J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2   ~ M      
0x0E -   ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Tamil language (Tamil and basic Latin scripts)

Locking Shift Character Set
for Tamil language
UDH contains 0x25 0x01 0x0B[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00   SP 0   ◌ா p
0x01 ◌ஂ   ! 1   ◌ி a q
0x02 ◌ஃ 2 ◌ீ b r
0x03   3 ◌ு c s
0x04   4 ◌ூ d t
0x05   5   e u
0x06   6   f v
0x07   7   g w
0x08   ) 8 ◌ெ h x
0x09   ( 9 ◌ே i y
0x0A LF   : ◌ை j z
0x0B   ESC   ;   k ◌ௗ
0x0C     , ◌ொ l
0x0D CR   ◌ோ m
0x0E   .     ◌ௌ n
0x0F ?   ◌் o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Tamil language
UDH contains 0x24 0x01 0x0B[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ <   | P    
0x01 £ =   A Q    
0x02 $ >   B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF   J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2 ~ M      
0x0E - ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Telugu language (Telugu and basic Latin scripts)

Locking Shift Character Set
for Telugu language
UDH contains 0x25 0x01 0x0C[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 ◌ఁ SP 0 ◌ా ◌ౕ p
0x01 ◌ం   ! 1 ◌ి a q
0x02 ◌ః 2 ◌ీ b r
0x03 3 ◌ు c s
0x04 4 ◌ూ d t
0x05 5 ◌ృ e u
0x06 6 ◌ౄ f v
0x07 7   g w
0x08 ) 8   ◌ె h x
0x09 ( 9 ◌ే i y
0x0A LF : ◌ై j z
0x0B ESC ;   k ◌ౖ
0x0C   ,   ◌ొ l
0x0D CR ◌ో m
0x0E .   ◌ౌ n ◌ౢ
0x0F ? ◌్ o ◌ౣ
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Telugu language
UDH contains 0x24 0x01 0x0C[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70
0x00 @ < | P    
0x01 £ = A Q    
0x02 $ > ౿ B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U    
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 '   }   I Y    
0x0A FF     J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2 ~ M      
0x0E - ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Kannada language (Kannada and basic Latin scripts)

Locking Shift Character Set
for Kannada language
UDH contains 0x25 0x01 0x07[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 !  
0x00   SP 0 p
0x01   ! 1 ಿ a q
0x02 2 b r
0x03 3 c s
0x04 4 d t
0x05 5 e u
0x06 6 f v
0x07 7   g w
0x08 ) 8   h x
0x09 ( 9 i y
0x0A LF : j z
0x0B ESC ;   k
0x0C   ,   l
0x0D CR m
0x0E . n
0x0F ? o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Kannada language
UDH contains 0x24 0x01 0x07[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 !  
0x00 @ <   | P    
0x01 £ =   A Q    
0x02 $ >   B R    
0x03 ¥ ¡   C S    
0x04 ¿ ^   D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF   J Z    
0x0B * SS2     K      
0x0C +   ] L      
0x0D CR2   ~ M      
0x0E -   ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

Malayalam language (Malayalam and basic Latin scripts)

Locking Shift Character Set
for Malayalam language
UDH contains 0x25 0x01 0x08[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 !  
0x00   SP 0 p
0x01   ! 1 ി a q
0x02 2 b r
0x03 3 c s
0x04 4 d t
0x05 5 e u
0x06 6 f v
0x07 7   g w
0x08 ) 8 h x
0x09 ( 9 i y
0x0A LF : j z
0x0B CR ;   k
0x0C   ,   l
0x0D CR m
0x0E ,   n
0x0F ? o
  • LF is a Line Feed control.
  • CR is a Carriage Return control, or filler.
  • ESC is an Escape control.
  • SP is a Space character.
Single Shift Character Set
for Malayalam language
UDH contains 0x25 0x01 0x08[2]
  0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 !  
0x00 @ < | P    
0x01 £ = A Q    
0x02 $ > B R    
0x03 ¥ ¡ C S    
0x04 ¿ ^ ൿ D T    
0x05 " ¡   E U  
0x06 ¤ _   F V    
0x07 % #   G W    
0x08 & * {   H X    
0x09 ' }   I Y    
0x0A FF   J Z    
0x0B * SS2   K      
0x0C + [ L      
0x0D CR2 ~ M      
0x0E - ] N      
0x0F / \   O      
  • FF is a Page Break control. If not recognized, it shall be treated like LF.
  • CR2 is a control character. No language specific character shall be encoded at this position.
  • SS2 is a second Single Shift Escape control reserved for future extensions.

See also

References

  1. ^ 3GPP TS 23.038, Alphabets and language-specific information.
  2. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab Alphabets and language-specific information (3G TS 23.038 version 12.0.0) (zipped .doc file), ETSI, September 2014.
  3. ^ "The text messages [...] contain up to 140 octets." in 3GPP TS 23.040 Technical realization of the Short Message Service (SMS)
  4. ^ Chad Selph (2012-11-08). "Adventures in Unicode SMS". Twilio. Retrieved 2015-08-28.

External links

Abbreviation

An abbreviation (from Latin brevis, meaning short ) is a shortened form of a word or phrase. It consists of a group of letters taken from the word or phrase. For example, the word abbreviation can itself be represented by the abbreviation abbr., abbrv., or abbrev.

In strict analysis, abbreviations should not be confused with contractions, crasis, acronyms, or initialisms, with which they share some semantic and phonetic functions, though all four are connected by the term "abbreviation" in loose parlance.An abbreviation is a shortening by any method; a contraction is a reduction of size by the drawing together of the parts. A contraction of a word is made by omitting certain letters or syllables and bringing together the first and last letters or elements; an abbreviation may be made by omitting certain portions from the interior or by cutting off a part. A contraction is an abbreviation, but an abbreviation is not necessarily a contraction. Acronyms and initialisms are regarded as subsets of abbreviations (e.g. by the Council of Science Editors). They are abbreviations that consist of the initial letters or parts of words.

Character encoding

Character encoding is used to represent a repertoire of characters by some kind of encoding system. Depending on the abstraction level and context, corresponding code points and the resulting code space may be regarded as bit patterns, octets, natural numbers, electrical pulses, etc. A character encoding is used in computation, data storage, and transmission of textual data. "Character set", "character map", "codeset" and "code page" are related, but not identical, terms.

Early character codes associated with the optical or electrical telegraph could only represent a subset of the characters used in written languages, sometimes restricted to upper case letters, numerals and some punctuation only. The low cost of digital representation of data in modern computer systems allows more elaborate character codes (such as Unicode) which represent most of the characters used in many written languages. Character encoding using internationally accepted standards permits worldwide interchange of text in electronic form.

Charset detection

Character encoding detection, charset detection, or code page detection is the process of heuristically guessing the character encoding of a series of bytes that represent text. The technique is recognised to be unreliable and is only used when specific metadata, such as a HTTP Content-Type: header is either not available, or is assumed to be untrustworthy.

This algorithm usually involves statistical analysis of byte patterns, like frequency distribution of trigraphs of various languages encoded in each code page that will be detected; such statistical analysis can also be used to perform language detection. This process is not foolproof because it depends on statistical data.

In general, incorrect charset detection leads to mojibake.

One of the few cases where charset detection works reliably is detecting UTF-8. This is due to the large percentage of invalid byte sequences in UTF-8, so that text in any other encoding that uses bytes with the high bit set is extremely unlikely to pass a UTF-8 validity test. However, badly written charset detection routines do not run the reliable UTF-8 test first, and may decide that UTF-8 is some other encoding. For example, it was common that web sites in UTF-8 containing the name of the German city München were shown as München.

UTF-16 is fairly reliable to detect due to the high number of newlines (U+000A) and spaces (U+0020) that should be found when dividing the data into 16-bit words, and the fact that few encodings use 16-bit words. This process is not foolproof; for example, some versions of the Windows operating system would mis-detect the phrase "Bush hid the facts" (without a newline) in ASCII as Chinese UTF-16LE.

Charset detection is particularly unreliable in Europe, in an environment of mixed ISO-8859 encodings. These are closely related eight-bit encodings that share an overlap in their lower half with ASCII. There is no technical way to tell these encodings apart and recognising them relies on identifying language features, such as letter frequencies or spellings.

Due to the unreliability of heuristic detection, it is better to properly label datasets with the correct encoding. HTML documents served across the web by HTTP should have their encoding stated out-of-band using the Content-Type: header.

Content-Type: text/html;charset=UTF-8

An isolated HTML document, such as one being edited as a file on disk, may imply such a header by a meta tag within the file:

or with a new meta type in HTML5

If the document is Unicode, then some UTF encodings explicitly label the document with an embedded initial byte order mark (BOM).

Code page 1287

Code page 1287, also known as CP1287, DEC Greek (8-bit) and EL8DEC, is one of the code pages implemented for the VT220 terminals. It supports the Greek language.

Code page 1288

Code page 1288, also known as CP1288, DEC Turkish (8-bit) and TR8DEC, is one of the code pages implemented for the VT220 terminals. It supports the Turkish language.

ISO/IEC 8859-11

ISO/IEC 8859-11:2001, Information technology — 8-bit single-byte coded graphic character sets — Part 11: Latin/Thai alphabet, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 2001. It is informally referred to as Latin/Thai. It is nearly identical to the national Thai standard TIS-620 (1990). The sole difference is that ISO/IEC 8859-11 allocates non-breaking space to code 0xA0, while TIS-620 leaves it undefined. (In practice, this small distinction is usually ignored.)

ISO-8859-11 is not a main registered IANA charset name despite following the normal pattern for IANA charsets based on the ISO 8859 series. However, it is defined as an alias of the close equivalent TIS-620 (which lacks the non-breaking space), and which can without problems be used for ISO/IEC 8859-11, since the no-break space has a code which was unallocated in TIS-620. Microsoft has assigned code page 28601 a.k.a. Windows-28601 to ISO-8859-11 in Windows. A draft had the Thai letters in different spots.As with all varieties of ISO/IEC 8859, the lower 128 codes are equivalent to ASCII. The additional characters, apart from no-break space, are found in Unicode in the same order, only shifted from 0xA1 to U+0E01 and so forth.

The Microsoft Windows code page 874 as well as the code page used in the Thai version of the Apple Macintosh, MacThai, are extensions of TIS-620 — incompatible with each other, however.

ISO/IEC 8859-12

ISO/IEC 8859-12 would have been part 12 of the ISO/IEC 8859 character encoding standard series.

ISO 8859-12 was originally proposed to support the Celtic languages. ISO 8859-12 was later slated for Latin/Devanagari, but this was abandoned in 1997, during the 12th meeting of ISO/IEC JTC 1/SC 2/WG 3 in Iraklion-Crete, Greece, 4 to 7 July 1997. The Celtic proposal was changed to ISO 8859-14.

ISO/IEC 8859-16

ISO/IEC 8859-16:2001, Information technology — 8-bit single-byte coded graphic character sets — Part 16: Latin alphabet No. 10, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 2001. It is informally referred to as Latin-10 or South-Eastern European. It was designed to cover Albanian, Croatian, Hungarian, Polish, Romanian, Serbian and Slovenian, but also French, German, Italian and Irish Gaelic (new orthography).

ISO-8859-16 is the IANA preferred charset name for this standard when supplemented with the C0 and C1 control codes from ISO/IEC 6429.

Microsoft has assigned code page 28606 a.k.a. Windows-28606 to ISO-8859-16.

ISO/IEC 8859-3

ISO/IEC 8859-3:1999, Information technology — 8-bit single-byte coded graphic character sets — Part 3: Latin alphabet No. 3, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 1988. It is informally referred to as Latin-3 or South European. It was designed to cover Turkish, Maltese and Esperanto, though the introduction of ISO/IEC 8859-9 superseded it for Turkish. The encoding remains popular with users of Esperanto, though use is waning as application support for Unicode becomes more common.

ISO-8859-3 is the IANA preferred charset name for this standard when supplemented with the C0 and C1 control codes from ISO/IEC 6429. Microsoft has assigned code page 28593 a.k.a. Windows-28593 to ISO-8859-3 in Windows. IBM has assigned code page 913 to ISO 8859-3.

ISO/IEC 8859-8

ISO/IEC 8859-8, Information technology — 8-bit single-byte coded graphic character sets — Part 8: Latin/Hebrew alphabet, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings. ISO/IEC 8859-8:1999 from 1999 represents its second and current revision, preceded by the first edition ISO/IEC 8859-8:1988 in 1988. It is informally referred to as Latin/Hebrew. ISO/IEC 8859-8 covers all the Hebrew letters, but no Hebrew vowel signs. IBM assigned code page 916 to it. This character set was also adopted by Israeli Standard SI1311:2002.

ISO-8859-8 is the IANA preferred charset name for this standard when supplemented with the C0 and C1 control codes from ISO/IEC 6429. The text is (usually) in logical order, so bidi processing is required for display. Nominally ISO-8859-8 (code page 28598) is for “visual order”, and ISO-8859-8-I (code page 38598) is for logical order. But usually in practice, and required for XML documents, ISO-8859-8 also stands for logical order text. The WHATWG Encoding Standard used by HTML5 treats ISO-8859-8 and ISO-8859-8-I as distinct encodings with the same mapping due to influence on the layout direction, but notes that this no longer applies to ISO-8859-6 (Arabic), only to ISO-8859-8.There is also ISO-8859-8-E which supposedly requires directionality to be explicitly specified with special control characters; this latter variant is in practice unused.

The Microsoft Windows code page for Hebrew, Windows-1255, is mostly an extension of ISO/IEC 8859-8 without C1 controls, except for the ommission of the double underscore, and replacement of the generic currency sign (¤) with the sheqel sign (₪). It adds support for vowel points as combining characters, and some additional punctiation.

Over a decade after the publication of that standard, Unicode is preferred, at least for the Internet (meaning UTF-8, the dominant encoding for web pages). ISO-8859-8 is used by less that 0.1% of websites.

ISO/IEC 8859-9

ISO/IEC 8859-9:1999, Information technology — 8-bit single-byte coded graphic character sets — Part 9: Latin alphabet No. 5, is part of the ISO/IEC 8859 series of ASCII-based standard character encodings, first edition published in 1989. It is informally referred to as Latin-5 or Turkish. It was designed to cover the Turkish language, designed as being of more use than the ISO/IEC 8859-3 encoding. It is identical to ISO/IEC 8859-1 except for these six replacements of Icelandic characters with characters unique to the Turkish alphabet:

ISO-8859-9 is the IANA preferred charset name for this standard when supplemented with the C0 and C1 control codes from ISO/IEC 6429. In modern applications Unicode and UTF-8 are preferred. Since June 2019, less than 0.1% of all web pages use ISO-8859-9.Microsoft has assigned code page 28599 a.k.a. Windows-28599 to ISO-8859-9 in Windows. IBM has assigned Code page 920 to ISO-8859-9.

Lotus International Character Set

The Lotus International Character Set (LICS) is a proprietary single-byte character encoding introduced in 1985 by Lotus Development Corporation. It is based on the 1983 DEC Multinational Character Set (MCS) for VT220 terminals. As such, LICS is also similar to two other descendants of MCS, the ECMA-94 character set of 1985 and the ISO 8859-1 (Latin-1) character set of 1987.

LICS was first introduced as the character set of Lotus 1-2-3 Release 2 for DOS in 1985. It is also utilized by 2.01, 2.2, 2.3 and 2.4 as well as by Symphony. It was also utilized in a number of third-party spreadsheet products emulating the file format. LICS was superseded by the Lotus Multi-Byte Character Set (LMBCS) introduced by Lotus 1-2-3 Release 3 in 1989.

National Replacement Character Set

The National Replacement Character Set, or NRCS for short, was a feature supported by later models of Digital's (DEC) computer terminal systems, starting with the VT200 series in 1983. NRCS allowed individual characters from one character set to be replaced by one from another set, allowing the construction of different character sets on the fly. It was used to customize the character set to different local languages, without having to change the terminal's ROM for different counties, or alternately, include many different sets in a larger ROM. Many 3rd party terminals and terminal emulators supporting VT200 codes also supported NRCS.

Short Message Peer-to-Peer

Short Message Peer-to-Peer (SMPP) in the telecommunications industry is an open, industry standard protocol designed to provide a flexible data communication interface for the transfer of short message data between External Short Messaging Entities (ESMEs), Routing Entities (REs) and Message Centres.SMPP is often used to allow third parties (e.g. value-added service providers like news organizations) to submit messages, often in bulk, but it may be used for SMS peering as well. SMPP is able to carry short messages including EMS, voicemail notifications, Cell Broadcasts, WAP messages including WAP Push messages (used to deliver MMS notifications), USSD messages and others. Because of its versatility and support for non-GSM SMS protocols, like UMTS, IS-95 (CDMA), CDMA2000, ANSI-136 (TDMA) and iDEN, SMPP is the most commonly used protocol for short message exchange outside SS7 networks.

T.51/ISO/IEC 6937

T.51 / ISO/IEC 6937:2001, Information technology — Coded graphic character set for text communication — Latin alphabet, is a multibyte extension of ASCII, or rather of ISO/IEC 646-IRV. It was developed in common with ITU-T (then CCITT) for telematic services under the name of T.51, and first became an ISO standard in 1983. Certain byte codes are used as lead bytes for letters with diacritics (accents). The value of the lead byte often indicates which diacritic that the letter has, and the follow byte then has the ASCII-value for the letter that the diacritic is on. Only certain combinations of lead byte and follow byte are allowed, and there are some exceptions to the lead byte interpretation for some follow bytes. However, there are no combining characters at all are encoded in ISO/IEC 6937. But one can represent some free-standing diacritics, often by letting the follow byte have the code for ASCII space.

ISO/IEC 6937's architects were Hugh McGregor Ross, Peter Fenwick, Bernard Marti and Loek Zeckendorf.

ISO6937/2 defines 327 characters found in modern European languages using the Latin alphabet. Non-Latin European characters, such as Cyrillic and Greek, are not included in the standard. Also, some diacritics used with the Latin alphabet like the Romanian comma are not included, using cedilla instead as no distinction between cedilla and comma below was made at the time.

IANA has registered the charset names ISO_6937-2-25 and ISO_6937-2-add for two (older) versions of this standard (plus control codes). But in practice this character encoding is unused on the Internet.

The ISO/IEC 2022 escape sequence to specify the right-hand side of the ISO/IEC 6937 character set is ESC - R (hex 1B 2D 52).

User Data Header

User Data Header (UDH) is a binary structure which may be present at the start of a short message in the Short Message Service in GSM. It does not contain any text, but it specifies how the message should be formatted and processed.

UDH can be used to form Concatenated SMS, to enrich the content of the message with colors, text formatting, small pictures and animations and simple music which are used in Enhanced Messaging Service (EMS), to convey port numbers which may cause start of an application in the mobile phone, which is used for Multimedia Messaging Service (MMS) or to indicate using of national language shift tables.UDH is defined in 3GPP 23.040 (originally GSM 03.40).

Xerox Character Code Standard

The Xerox Character Code Standard (XCCS) is a historical 16-bit character encoding that was created by Xerox in 1980 for the exchange of information between elements of the Xerox Network Systems Architecture. It encodes the characters required for languages using the Latin, Arabic, Hebrew, Greek and Cyrillic scripts, the Chinese, Japanese and Korean writing systems, and technical symbols.It can be viewed as an early precursor of, and inspiration for, Unicode.The International Character Set (ICS) is compatible with XCCS.The XCCS 2.0 (1990) revision covers Latin, Arabic, Hebrew, Gothic, Armenian, Runic, Georgian, Greek, Cyrillic, Hiragana, Katakana, Bopomofo scripts, technical, and mathematical symbols.

Early telecommunications
ISO/IEC 8859
Bibliographic use
National standards
EUC
ISO/IEC 2022
MacOS code pages("scripts")
DOS code pages
IBM AIX code pages
IBM Apple MacIntoshemulations
IBM Adobe emulations
IBM DEC emulations
IBM HP emulations
Windows code pages
EBCDIC code pages
Platform specific
Unicode / ISO/IEC 10646
TeX typesetting system
Miscellaneous code pages
Related topics

This page is based on a Wikipedia article written by authors (here).
Text is available under the CC BY-SA 3.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.