Reference articles on history, science, culture and more
Encyclopedia

Indian Script Code for Information Interchange

Coding scheme for Indian writing systems

Indian Script Code for Information Interchange (ISCII) is a coding scheme for representing various writing systems of India. It encodes the main Indic scripts and a Roman transliteration. The supported scripts are: Bengali-Assamese, Devanagari, Gujarati, Gurmukhi, Kannada, Malayalam, Odia, Tamil, and Telugu. ISCII does not encode the writing systems of India that are based on Persian, but its writing system switching codes nonetheless provide for Kashmiri, Sindhi, Urdu, Persian, Pashto and Arabic. The Persian-based writing systems were subsequently encoded in the PASCII encoding.

ISCII has not been widely used outside certain government institutions, although a variant without the ATR mechanism was used on classic Mac OS, Mac OS Devanagari, and it has now been rendered largely obsolete by Unicode. Unicode uses a separate block for each Indic writing system, and largely preserves the ISCII layout within each block.

01Background

The Brahmi-derived writing systems have similar structure. So ISCII encodes letters with the same phonetic value at the same code point, overlaying the various scripts. For example, the ISCII codes 0xB3 0xDB represent [ki]. This will be rendered as കി in Malayalam, कि in Devanagari, as ਕਿ in Gurmukhi, and as கி in Tamil. The writing system can be selected in rich text by markup or in plain text by means of the ATR code described below.

One motivation for the use of a single encoding is the idea that it will allow easy transliteration from one writing system to another. However, there are enough incompatibilities that this is not really a practical idea.

ISCII is an 8-bit encoding. The lower 128 code points are plain ASCII, the upper 128 code points are ISCII-specific. In addition to the code points representing characters, ISCII makes use of a code point with mnemonic ATR that indicates that the following byte contains one of two kinds of information. One set of values changes the writing system until the next writing system indicator or end-of-line. Another set of values select display modes such as bold and italic. ISCII does not provide a means of indicating the default writing system.

02Code page layout

The following table shows the character set for Devanagari. The code sets for Assamese, Bengali, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, and Telugu are similar, with each Devanagari form replaced by the equivalent form in each writing system. Each character is shown with its decimal code and its Unicode equivalent.

ISCII Devanagari
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL SOH STX ETX EOT ENQ ACK BEL  BS   HT   LF   VT   FF   CR   SO   SI  
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN  EM  SUB ESC  FS   GS   RS   US 
2x  SP  ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ' a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL
8x
9x
Ax
Bx
Cx य़
Dx INV ि
Ex ATR
Fx EXT
  Undefined   Lead byte

03Special code points

INV character, code point D9 (217)
The INV (invisible consonant) character is used as a pseudo-consonant to display combining elements in isolation. For example, क (ka) + ् (halant) + INV = क्‍ (half ka). The Unicode equivalent is U+200D ZERO WIDTH JOINER (ZWJ). However, as noted below, the ISCII halant character can be doubled or combined with the ISCII nukta to achieve effects created by ZWNJ or ZWJ in Unicode. For this reason, Apple maps the ISCII INV character to the Unicode left-to-right mark, so as to guarantee round-tripping.
ATR character, code point EF (239)
The ATR (attribute) character followed by a byte code is used to switch to a different font attribute (such as bold) or to a different ISCII or PASCII language (such as Bengali), up to the next ATR sequence or the end of the line. This has no direct Unicode equivalent, as font attributes are not part of Unicode, and each script has a distinct set of code points.
Presentational attributes
ATR + byteMnemonicFormatting option
0x30BLDBold
0x31ITAItalics
0x32ULUnderlining
0x33EXPExpanded
0x34HLTHighlight
0x35OTLOutline
0x36SHDShadow
0x37TOPTop half of character (used with LOW to create double-height characters)
0x38LOWBottom half of character (used with TOP to create double-height characters)
0x39DBLEntire row double-width and double-height
Shifts to ISCII scripts
ATR + byteMnemonicISCII script
0x40DEFDefault script (i.e. the script which will be switched back to after a line break)
0x41RMNRomanised transliteration
0x42DEVDevanagari
0x43BNGBengali script
0x44TMLTamil script
0x45TLGTelugu script
0x46ASMAssamese script
0x47ORIOdia script
0x48KNDKannada script
0x49MLMMalayalam script
0x4AGJRGujarati script
0x4BPNJGurmukhī
Shifts to PASCII
ATR + byteMnemonicPASCII locale
0x71ARBArabic alphabet
0x72PESPersian alphabet
0x73URDUrdu alphabet
0x74SNDSindhi alphabet
0x75KSMKashmiri alphabet
0x76PSTPashto alphabet
EXT character, code point F0 (240)
The EXT (extensions for Vedic) character followed by a byte code indicates a Vedic accent. This has no direct Unicode equivalent, as Vedic accents are assigned to distinct code points.
Halant character ्, code point E8 (232)
The halant character removes the implicit vowel from a consonant and is used between consonants to represent conjunct consonants. For example, क (ka) + ् (halant) + त (ta) = क्त (kta). The sequence ् (halant) + ् (halant) displays a conjunct with an explicit halant, for example क (ka) + ् (halant) + ् (halant) + त (ta) = क्‌त. The sequence ् (halant) + ़ (nukta) displays a conjunct with half consonants, if available, for example क (ka) + ् (halant) + ़ (nukta) + त (ta) = क्‍त.
Correspondences between ISCII and Unicode halent/virama behaviour
ISCIIUnicode
single halantE8halant094D
halant + halantE8 E8halant + ZWNJ094D 200C
halant + nuktaE8 E9halant + ZWJ094D 200D
Nukta character ़, code point E9 (233)
The nukta character after another ISCII character is used for a number of rarer characters which don't exist in the main ISCII set. For example क (ka) + ़ (nukta) = क़ (qa). These characters have precomposed forms in Unicode, as shown in the following table.
Single Unicode characters corresponding to ISCII nukta sequences
ISCII
code point
Original
character
Character
with nukta
Unicode
code point
A1 (161)0950
A6 (166)090C
A7 (167)0961
AA (176)0960
B3 (179)क़0958
B4 (180)ख़0959
B5 (181)ग़095A
BA (186)ज़095B
BF (191)ड़095C
C0 (192)ढ़095D
C9 (201)फ़095E
DB (219)ि0962
DC (220)0963
DF (223)0944
EA (234)093D

04Code pages for ISCII conversion

To convert from Unicode (UTF-8) to an ISCII / ANSI coding, the following code pages may be used:

  • 57002: Devanagari (Hindi, Marathi, Sanskrit, Konkani)
  • 57003: Bengali
  • 57004: Tamil
  • 57005: Telugu
  • 57006: Assamese
  • 57007: Odia
  • 57008: Kannada
  • 57009: Malayalam
  • 57010: Gujarati
  • 57011: Punjabi (Gurmukhi)

05Code points for all languages

Code set for all abugidas using ISCII
HexOfficial
Listing
ISO 15919DevanagariBengali AssameseGurmukhiGujaratiOriyaTamilTeluguKannadaMalayalam
A0Sign OMŌm̐0950 0AD0
A1Vowel-modifier CHANDRABINDU09010981 09810A010A810B010C01
A2Vowel-modifier ANUSWARAM09020982 09820A020A820B020B820C020C820D02
A3Vowel-modifier VISARGAM09030983 09830A030A830B030B830C030C830D03
A4Vowel Aa09050985 09850A050A850B050B850C050C850D05
A5Vowel AAā09060986 09860A060A860B060B860C060C860D06
A6Vowel Ii09070987 09870A070A870B070B870C070C870D07
A6*Vowel LI (Sanskrit)090C098C 098C0A8C0B0C0C0C0C8C0D0C
A7Vowel IIī09080988 09880A080A880B080B880C080C880D08
A7*Vowel LII (Sanskrit)096109E1 09E10AE10B610C610CE10D61
A8Vowel Uu09090989 09890A090A890B090B890C090C890D09
A9Vowel UUū090A098A 098A0A0A0A8A0B0A0B8A0C0A0C8A0D0A
AAVowel RI090B098B 098B0A8B0B0B0C0B0C8B0D0B
AA*Vowel RII (Sanskrit)096009E0 09E00AE00B600C600CE00D60
ABVowel E (Southern Scripts)e090E 0B8E0C0E0C8E0D0E
ACVowel EYē090F098F 098F0A0F0A8F0B0F0B8F0C0F0C8F0D0F
ADVowel AIai09100990 09900A100A900B100B900C100C900D10
AEVowel AYE (Devanagari Script)ê090D 0A8D
AFVowel O (Southern Scripts)o0912 0B920C120C920D12
B0Vowel OWō09130993 09930A130A930B130B930C130C930D13
B1Vowel AUau09140994 09940A140A940B140B940C140C940D14
B2Vowel AWE (Devanagari Script)ô0911 0A91
B3Consonant KAk09150995 09950A150A950B150B950C150C950D15
B3*Consonant QA (Urdu)qक़0958
B4Consonant KHAkh09160996 09960A160A960B160C160C960D16
B4*Consonant KHHA (Urdu)khख़0959 ਖ਼0A59
B5Consonant GAg09170997 09970A170A970B170C170C970D17
B5*Consonant GHHA (Urdu)ġग़095A ਗ਼0A5A
B6Consonant GHAgh09180998 09980A180A980B180C180C980D18
B7Consonant NGA09190999 09990A190A990B190B990C190C990D19
B8Consonant CHAc091A099A 099A0A1A0A9A0B1A0B9A0C1A0C9A0D1A
B9Consonant CHHAch091B099B 099B0A1B0A9B0B1B0C1B0C9B0D1B
BAConsonant JAj091C099C 099C0A1C0A9C0B1C0B9C0C1C0C9C0D1C
BA*Consonant ZA (Urdu)zज़095B ਜ਼0A5B
BBConsonant JHAjh091D099D 099D0A1D0A9D0B1D0C1D0C9D0D1D
BCConsonant JNAñ091E099E 099E0A1E0A9E0B1E0B9E0C1E0C9E0D1E
BDConsonant Hard TA091F099F 099F0A1F0A9F0B1F0B9F0C1F0C9F0D1F
BEConsonant Hard THAṭh092009A0 09A00A200AA00B200C200CA00D20
BFConsonant Hard DA092109A1 09A10A210AA10B210C210CA10D21
BF*Consonant Flapped DAड़095Cড়09DC ড় 09DC0A5Cଡ଼0B5C
C0Consonant Hard DHAḍh092209A2 09A20A220AA20B220C220CA20D22
C0*Consonant Flapped DHAṛhढ़095Dঢ়09DD ঢ় 09DDଢ଼0B5D
C1Consonant Hard NA092309A3 09A30A230AA30B230BA30C230CA30D23
C2Consonant Soft TAt092409A4 09A40A240AA40B240BA40C240CA40D24
C3Consonant Soft THAth092509A5 09A50A250AA50B250C250CA50D25
C4Consonant Soft DAd092609A6 09A60A260AA60B260C260CA60D26
C5Consonant Soft DHAdh092709A7 09A70A270AA70B270C270CA70D27
C6Consonant Soft NAn092809A8 09A80A280AA80B280BA80C280CA80D28
C7Consonant NA (Tamil)0929 0BA9
C8Consonant PAp092A09AA 09AA0A2A0AAA0B2A0BAA0C2A0CAA0D2A
C9Consonant PHAph092B09AB 09AB0A2B0AAB0B2B0C2B0CAB0D2B
C9*Consonant FA (Urdu)fफ़095E ਫ਼0A5E0CDE
CAConsonant BAb092C09AC 09AC0A2C0AAC0B2C0C2C0CAC0D2C
CBConsonant BHAbh092D09AD 09AD0A2D0AAD0B2D0C2D0CAD0D2D
CCConsonant MAm092E09AE 09AE0A2E0AAE0B2E0BAE0C2E0CAE0D2E
CDConsonant YAy092F09AF 09AF0A2F0AAF0B2F0BAF0C2F0CAF0D2F
CEConsonant JYA (Bengali, Assamese & Oriya)य़095Fয়09DF য় 09DF0B5F
CFConsonant RA093009B0 ৰ︎ 09F00A300AB00B300BB00C300CB00D30
D0Consonant Hard RA (Southern Scripts)0931 0BB10C310CB10D31
D1Consonant LAl093209B2 09B20A320AB20B320BB20C320CB20D32
D2Consonant Hard LA0933 ਲ਼0A330AB30B330BB30C330CB30D33
D3Consonant ZHA (Tamil & Malayalam)0934 0BB40D34
D4Consonant VAv093509AC 09F10A350AB50B350BB50C350CB50D35
D5Consonant SHAś093609B6 09B6ਸ਼0A360AB60B360BB60C360CB60D36
D6Consonant Hard SHA093709B7 09B70AB70B370BB70C370CB70D37
D7Consonant SAs093809B8 09B80A380AB80B380BB80C380CB80D38
D8Consonant HAh093909B9 09B90A390AB90B390BB90C390CB90D39
D9Consonant INVISIBLE
DAVowel Sign AAā093E09BE 09BE0A3E0ABE0B3E0BBE0C3E0CBE0D3E
DBVowel Sign Iiि093Fি09BF ি 09BFਿ0A3Fિ0ABFି0B3Fி0BBFి0C3Fಿ0CBFി0D3F
DB*Vowel Sign LI (Sanskrit)096209E2 09E20AE20B620C620CE20D62
DCVowel Sign IIī094009C0 09C00A400AC00B400BC00C400CC00D40
DC*Vowel Sign LII (Sanskrit)096309E3 09E30AE30B630C630CE30D63
DDVowel Sign Uu094109C1 09C10A410AC10B410BC10C410CC10D41
DEVowel Sign UUū094209C2 09C20A420AC20B420BC20C420CC20D42
DFVowel Sign RI094309C3 09C30AC30B430C430CC30D43
DF*Vowel Sign RII (Sanskrit)094409C4 09C40AC40B440C440CC40D44
E0Vowel Sign E (Southern Scripts)e0946 0BC60C460CC60D46
E1Vowel Sign EYē094709C7 09C70A470AC70B470BC70C470CC70D47
E2Vowel Sign AIai094809C8 09C80A480AC80B480BC80C480CC80D48
E3Vowel Sign AYE (Devanagari Script)ê0945 0AC5
E4Vowel Sign O (Southern Scripts)o094A 0BCA0C4A0CCA0D4A
E5Vowel Sign OWō094B09CB 09CB0A4B0ACB0B4B0BCB0C4B0CCB0D4B
E6Vowel Sign AUau094C09CC 09CC0A4C0ACC0B4C0BCC0C4C0CCC0D4C
E7Vowel Sign AWE (Devanagari Script)ô0949 0AC9
E8Vowel Omission Sign (Halant)094D09CD 09CD0A4D0ACD0B4D0BCD0C4D0CCD0D4D
E9Diacritic Sign (Nuktam)093C09BC 09BC0A3C0ABC0B3C0CBC
EAFull Stop (Viram, Northern Scripts)0964
EA*Vowel Stress Sign AVAGRAH093D09BD 09BD0ABD0B3D0C3D0CBD0D3D
EBUnused
ECUnused
EDUnused
EEUnused
EFAttribute Code
F0Extension Code
F1Digit 0096609E6 09E60A660AE60B660BE60C660CE60D66
F2Digit 1096709E7 09E70A670AE70B670BE70C670CE70D67
F3Digit 2096809E8 09E80A680AE80B680BE80C680CE80D68
F4Digit 3096909E9 09E90A690AE90B690BE90C690CE90D69
F5Digit 4096A09EA 09EA0A6A0AEA0B6A0BEA0C6A0CEA0D6A
F6Digit 5096B09EB 09EB0A6B0AEB0B6B0BEB0C6B0CEB0D6B
F7Digit 6096C09EC 09EC0A6C0AEC0B6C0BEC0C6C0CEC0D6C
F8Digit 7096D09ED 09ED0A6D0AED0B6D0BED0C6D0CED0D6D
F9Digit 8096E09EE 09EE0A6E0AEE0B6E0BEE0C6E0CEE0D6E
FADigit 9096F09EF 09EF0A6F0AEF0B6F0BEF0C6F0CEF0D6F
FBUnused
FCUnused
FDUnused
FEUnused
FFUnused
Watch videos about Indian Script Code for Information InterchangeExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Indian Script Code for Information Interchange, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.