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]
 0x000x100x200x300x400x500x600x70
0x00 @ΔSP0¡P¿p
0x01 £_!1AQaq
0x02 $Φ"2BRbr
0x03 ¥Γ#3CScs
0x04 èΛ¤4DTdt
0x05 éΩ%5EUeu
0x06 ùΠ&6FVfv
0x07 ìΨ'7GWgw
0x08 òΣ(8HXhx
0x09 ÇΘ)9IYiy
0x0A LFΞ*:JZjz
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 to extension table (maps to NBSP).
  • SP is a Space character.
Basic Character Set Extension[2]
 0x000x100x200x300x400x500x600x70
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.

It is important (especially when a message is to be segmented using concatenated SMS mechanism) that characters from the Basic Character Set table take one septet, characters from the Basic Character Set Extension table take two septets.

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.

Note that the character 0x09 (Ç, capital C with cedilla) should instead be replaced by ç (small c with cedilla) in modern implementation, as recommended by Unicode,[4] since the uppercase version is of little use.

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.[5] 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 Emoji, 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 a single SMS is immediately reduced to 70 characters, instead of 160. Others vary based on the choice and configuration of SMS application, and the length of the message.

To avoid unexpected costs for senders that have a subscription for a limited pack of sent SMS, applications 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 are intended to be reassembled later by the recipient.

Some applications alert the user when a message will require splitting, or even send a longer message as a multimedia message (MMS).

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 152 characters are allowed, encoded in 133 octets (140 octets, minus 7-octets User Data Header).

Characters from any locking shift table take one septet, characters from the single shift table (or Basic Character Set Extension table) take two septets.

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. The two other languages also have too many distinct characters to fit into a 7-bit shift table.

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]
 0x000x100x200x300x400x500x600x70
0x00 @ΔSP0¡P¿p
0x01 £_!1AQaq
0x02 $Φ"2BRbr
0x03 ¥Γ#3CScs
0x04 èΛ¤4DTdt
0x05 éΩ%5EUeu
0x06 ùΠ&6FVfv
0x07 ìΨ'7GWgw
0x08 òΣ(8HXhx
0x09 ÇΘ)9IYiy
0x0A LFΞ*:JZjz
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]
 0x000x100x200x300x400x500x600x70
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]
 0x000x100x200x300x400x500x600x70
0x00 @ΔSP0ÍP~p
0x01 £_!1AQaq
0x02 $ª"2BRbr
0x03 ¥Ç#3CScs
0x04 êÀº4DTdt
0x05 é∞%5EUeu
0x06 ú^&6FVfv
0x07 í\'7GWgw
0x08 ó€(8HXhx
0x09 çÓ)9IYiy
0x0A LF|*:JZjz
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]
 0x000x100x200x300x400x500x600x70
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]
 0x000x100x200x300x400x500x600x70
0x00 @ΔSP0İPçp
0x01 £_!1AQaq
0x02 $Φ"2BRbr
0x03 ¥Γ#3CScs
0x04 €Λ¤4DTdt
0x05 éΩ%5EUeu
0x06 ùΠ&6FVfv
0x07 ıΨ'7GWgw
0x08 òΣ(8HXhx
0x09 ÇΘ)9IYiy
0x0A LFΞ*:JZjz
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]
 0x000x100x200x300x400x500x600x70
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]
 0x000x100x200x300x400x500x600x70
0x00 اثSP0صں◌ٔp
0x01 آج!1ضڻaq
0x02 بځڏ2طڼbr
0x03 ٻڄڍ3ظوcs
0x04 ڀڃذ4عۄdt
0x05 پڅر5فەeu
0x06 ڦچڑ6قہfv
0x07 تڇړ7کھgw
0x08 ۂح)8ڪءhx
0x09 ٿخ(9ګیiy
0x0A LFدڙ:گېjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<۴◌ؓ|P  
0x01 £=۵◌ؔAQ  
0x02 $>۶؛BR  
0x03 ¥¡۷؟CS  
0x04 ¿^۸ـDT  
0x05 "¡۹◌ْEU€ 
0x06 ¤_،◌٘FV  
0x07 %#؍٫GW  
0x08 &*{٬HX  
0x09 '؀}ٲIY  
0x0A FF؁؎ٳJZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ँऐSP0ब◌ाॐp
0x01 ◌ंऑ!1भ◌िaq
0x02 ◌ःऒट2म◌ीbr
0x03 अओठ3य◌ुcs
0x04 आऔड4र◌ूdt
0x05 इकढ5ऱ◌ृeu
0x06 ईखण6ल◌ॄfv
0x07 उगत7ळ◌ॅgw
0x08 ऊघ)8ऴ◌ॆhx
0x09 ऋङ(9व◌ेiy
0x0A LFचथ:श◌ैjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<४ज़|P  
0x01 £=५ड़AQ  
0x02 $>६ढ़BR  
0x03 ¥¡७फ़CS  
0x04 ¿^८य़DT  
0x05 "¡९ॠEU€ 
0x06 ¤_◌॑ॡFV  
0x07 %#◌॒◌ॢGW  
0x08 &*{◌ॣHX  
0x09 '।}॰IY  
0x0A FF॥◌॓ॱJZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ঁঐSP0◌বাৎp
0x01 ◌ং !1ভ◌িaq
0x02 ◌ঃ ট2ম◌ীbr
0x03 অওঠ3য◌ুcs
0x04 আঔড4র◌ূdt
0x05 ইকঢ5 ◌ৃeu
0x06 ঈখণ6ল◌ৄfv
0x07 উগত7  gw
0x08 ঊঘ)8  hx
0x09 ঋঙ(9 ◌েiy
0x0A LFচথ:শ◌ৈjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<৬৶|P  
0x01 £=৭৷AQ  
0x02 $>৮৸BR  
0x03 ¥¡৯৹CS  
0x04 ¿^য়৺DT  
0x05 "¡ৠ EU€ 
0x06 ¤_ৡ FV  
0x07 %#◌ৢ GW  
0x08 &*{ HX  
0x09 '০} IY  
0x0A FF১◌ৣ JZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ਁਐSP0ਬ◌ਾ◌ੑp
0x01 ◌ਂ !1ਭ◌ਿaq
0x02 ◌ਃ ਟ2ਮ◌ੀbr
0x03 ਅਓਠ3ਯ◌ੁcs
0x04 ਆਔਡ4ਰ◌ੂdt
0x05 ਇਕਢ5  eu
0x06 ਈਖਣ6ਲ fv
0x07 ਉਗਤ7ਲ਼ gw
0x08 ਊਘ)8  hx
0x09  ਙ(9ਵ◌ੇiy
0x0A LFਚਥ:ਸ਼◌ੈjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<੪ |P  
0x01 £=੫ AQ  
0x02 $>੬ BR  
0x03 ¥¡੭ CS  
0x04 ¿^੮ DT  
0x05 "¡੯ EU€ 
0x06 ¤_ਖ਼ FV  
0x07 %#ਗ਼ GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥ਜ਼ JZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ઁઐSP0બ◌ાૐp
0x01 ◌ંઑ!1ભ◌િaq
0x02 ◌ઃ ટ2મ◌ીbr
0x03 અઓઠ3ય◌ુcs
0x04 આઔડ4ર◌ૂdt
0x05 ઇકઢ5 ◌ૃeu
0x06 ઈખણ6લ◌ૄfv
0x07 ઉગત7ળ◌ૅgw
0x08 ઊઘ)8  hx
0x09 ઋઙ(9વ◌ેiy
0x0A LFચથ:શ◌ૈjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<૪ |P  
0x01 £=૫ AQ  
0x02 $>૬ BR  
0x03 ¥¡૭ CS  
0x04 ¿^૮ DT  
0x05 "¡૯ EU€ 
0x06 ¤_  FV  
0x07 %#  GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥  JZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ଁଐSP0ବ◌ା◌ୖp
0x01 ◌ଂ !1ଭ◌ିaq
0x02 ◌ଃ ଟ2ମ◌ୀbr
0x03 ଅଓଠ3ଯ◌ୁcs
0x04 ଆଔଡ4ର◌ୂdt
0x05 ଇକଢ5 ◌ୃeu
0x06 ଈଖଣ6ଲୄfv
0x07 ଉଗତ7ଳ gw
0x08 ଊଘ)8  hx
0x09 ଋଙ(9ଵ◌େiy
0x0A LFଚଥ:ଶ◌ୈjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<୪ |P  
0x01 £=୫ AQ  
0x02 $>୬ BR  
0x03 ¥¡୭ CS  
0x04 ¿^୮ DT  
0x05 "¡୯ EU€ 
0x06 ¤_ଡ଼ FV  
0x07 %#ଢ଼ GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥ୟ JZ  
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]
 0x000x100x200x300x400x500x600x70
0x00  ஐSP0 ◌ாௐp
0x01 ◌ஂ !1 ◌ிaq
0x02 ◌ஃஒட2ம◌ீbr
0x03 அஓ 3ய◌ுcs
0x04 ஆஔ 4ர◌ூdt
0x05 இக 5ற eu
0x06 ஈ ண6ல fv
0x07 உ த7ள gw
0x08 ஊ )8ழ◌ெhx
0x09  ங(9வ◌ேiy
0x0A LFச :ஶ◌ைjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<௪ |P  
0x01 £=௫ AQ  
0x02 $>௬ BR  
0x03 ¥¡௭ CS  
0x04 ¿^௮ DT  
0x05 "¡௯ EU€ 
0x06 ¤_௳ FV  
0x07 %#௴ GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥௵ JZ  
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]
 0x000x100x200x300x400x500x600x70
0x00 ◌ఁఐSP0బ◌ా◌ౕp
0x01 ◌ం !1భ◌ిaq
0x02 ◌ఃఒట2మ◌ీbr
0x03 అఓఠ3య◌ుcs
0x04 ఆఔడ4ర◌ూdt
0x05 ఇకఢ5ఱ◌ృeu
0x06 ఈఖణ6ల◌ౄfv
0x07 ఉగత7ళ gw
0x08 ఊఘ)8 ◌ెhx
0x09 ఋఙ(9వ◌ేiy
0x0A LFచథ:శ◌ైjz
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]
 0x000x100x200x300x400x500x600x70
0x00 @<౪౽|P  
0x01 £=౫౾AQ  
0x02 $>౬౿BR  
0x03 ¥¡౭ CS  
0x04 ¿^౮ DT  
0x05 "¡౯ EU  
0x06 ¤_ౘ FV  
0x07 %#ౙ GW  
0x08 &*{ HX  
0x09 ' } IY  
0x0A FF ౸ JZ  
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]
 0x000x100x200x300x400x500x600x70 !  
0x00  ಐSP0ಬಾೕp
0x01 ಂ !1ಭಿaq
0x02 ಃಒಟ2ಮೀbr
0x03 ಅಓಠ3ಯುcs
0x04 ಆಔಪ4ರೂdt
0x05 ಇಕಢ5ಱೃeu
0x06 ಈಖಣ6ಲೄfv
0x07 ಉಗತ7ಳ gw
0x08 ಊಘ)8 ೆhx
0x09 ಋಙ(9ವೇiy
0x0A LFಚಥ:ಶೈjz
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]
 0x000x100x200x300x400x500x600x70 !  
0x00 @<೪ |P  
0x01 £=೫ AQ  
0x02 $>೬ BR  
0x03 ¥¡೭ CS  
0x04 ¿^೮ DT  
0x05 "¡೯ EU€ 
0x06 ¤_ೞ FV  
0x07 %#ೱ GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥ೲ JZ  
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]
 0x000x100x200x300x400x500x600x70 !  
0x00  ഐSP0ബാൗp
0x01 ം !1ഭിaq
0x02 ഃഒട2മീbr
0x03 അഓഠ3യുcs
0x04 ആഔഡ4രൂdt
0x05 ഇകഢ5റൃeu
0x06 ഈഖണ6ലൄfv
0x07 ഉഗത7ള gw
0x08 ഊഘ)8ഴെhx
0x09 ഋങ(9വേiy
0x0A LFചഥ:ശൈjz
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 Malayalam language
UDH contains 0x25 0x01 0x08[2]
 0x000x100x200x300x400x500x600x70 !  
0x00 @<൪ൻ-P  
0x01 £=൫ർAQ  
0x02 $>൬ൽBR  
0x03 ¥¡൭ൾCS  
0x04 ¿^൮ൿDT  
0x05 "¡൯ EU€ 
0x06 ¤_൰ FV  
0x07 %#൱ GW  
0x08 &*{ HX  
0x09 '।} IY  
0x0A FF॥൲ JZ  
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. 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. GSM 03.38 to Unicode GSM 03.38 to Unicode
  5. Chad Selph (2012-11-08). "Adventures in Unicode SMS". Twilio. Archived from the original on 2015-09-08. Retrieved 2015-08-28.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.