ISO/IEC 646
This article needs additional citations for verification. (September 2008) |
ISO/IEC 646:1991, Information technology — ISO 7-bit coded character set for information interchange, is an ISO standard that since its first edition in 1972 has specified a 7-bit character code from which several national standards are derived. ISO/IEC 646 was also ratified by ECMA as ECMA-6.
Characters in the ISO/IEC 646 Basic Character Set are invariant characters.[1] Since that portion of ISO/IEC 646, that is the invariant character set shared by all countries, specified only those letters used in the ISO basic Latin alphabet, countries using additional letters needed to create national variants of ISO 646 to be able to use their native scripts. Since universal acceptance of the 8-bit byte did not exist at that time, the national characters had to be made to fit within the constraints of 7 bits, meaning that some characters that appear in ASCII do not appear in other national variants of ISO 646.
History
ISO/IEC 646 and its predecessor ASCII (ANSI X3.4) largely endorsed existing practice regarding character encodings in the telecommunications industry.
As ASCII did not provide a number of characters needed for languages other than English, a number of national variants were made that substituted some less-used characters with needed ones. Due to the incompatibility of the various national variants, an International Reference Version (IRV) of ISO/IEC 646 was introduced, in an attempt to at least restrict the replaced set to the same characters in all variants. The original version (ISO 646 IRV) differed from ASCII only in that in code point 0024, ASCII's dollar sign ($) was replaced by the international currency symbol (¤). The final 1991 version of the code ISO 646:1991 is also known as ITU T.50, International Reference Alphabet or IRA, formerly International Alphabet No. 5, IA5. This standard allows users to exercise the 12 variable characters(i.e., 2 alternative graphic characters and 10 national defined characters). Among these exercises, ISO 646:1991 IRV(International Reference Version) is explicitly defined and identical to ASCII.[2]
The ISO 8859 series of standards governing 8-bit character encodings supersede the ISO 646 international standard and its national variants, by providing 96 additional characters with the additional bit and thus avoiding any substitution of ASCII codes. The ISO 10646 standard, directly related to Unicode, supersedes all of the ISO 646 and ISO 8859 sets with one unified set of character encodings using a larger 21-bit value.
A legacy of ISO/IEC 646 is visible on Windows, where in some fonts or locales, the backslash character used in filenames is rendered as ¥ or other characters. Despite the fact that a different code for ¥ was available even on the original IBM PC, so much text was created with the backslash code used for ¥ that even modern Windows fonts have found it necessary to render the code that way. Another legacy is the existence of trigraphs in the C programming language.
Codepage layout
The following table shows the ISO/IEC 646 character set. Each character is shown with the hex code of its Unicode equivalent and the decimal value of the ISO/IEC 646 code. Grey shaded cells indicate code points with character glyphs that vary from region to region. These are discussed in detail below.
National variants
Some national variants of ISO 646 are:
|
|
Other proprietary standards approved later for international use by some standard committees:
|
|
The specifics of the changes for some of these variants are given in this table:
Codes | Characters for each ISO 646 compatible charset | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
binary | dec | hex | INV | T.61 | US | JA | JA-O | KR | CN | TW | IRV | GB | DK | NO | NO-2 | FI,SE | SE-C | DE | HU | FR | FR-0 | CA-1 | CA-2 | IE | IS | ita | por | PT | esp | ES | CU | MT | YU |
010 0010 | 34 | 22 | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " | " |
010 0011 | 35 | 23 | # | # | # | # | # | # | # | # | £ | # | # | § | # | # | # | # | £ | £ | # | # | £ | # | £ | # | £ | # | # | # | # | # | |
010 0100 | 36 | 24 | ¤ | $ | $ | $ | $ | ¥ | $ | $ | $ | $ | $ | $ | ¤ | ¤ | $ | ¤ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | $ | ¤ | $ | $ | |
010 1001 | 39 | 27 | ' | ' | ' | ' | ' | ' | ' | ' | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ' | ’ | ’ | ’ | ’ | ’ | ’ | ’ | ’ |
010 1100 | 44 | 2C | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , | , |
010 1101 | 45 | 2D | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
010 1111 | 47 | 2F | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / | / |
100 0000 | 64 | 40 | @ | @ | @ | @ | @ | @ | @ | @ | @ | @ | @ | @ | @ | É | § | Á | à | à | à | à | Ó | Ð | § | § | ´ | § | · | @ | @ | Ž | |
101 1011 | 91 | 5B | [ | [ | [ | [ | [ | [ | [ | [ | [ | Æ | Æ | Æ | Ä | Ä | Ä | É | ° | ° | â | â | É | Þ | ° | Ã | Ã | ¡ | ¡ | ¡ | ġ | Š | |
101 1100 | 92 | 5C | \ | ¥ | ¥ | ₩ | \ | \ | \ | \ | Ø | Ø | Ø | Ö | Ö | Ö | Ö | ç | ç | ç | ç | Í | \ | ç | Ç | Ç | Ñ | Ñ | Ñ | ż | Đ | ||
101 1101 | 93 | 5D | ] | ] | ] | ] | ] | ] | ] | ] | ] | Å | Å | Å | Å | Å | Ü | Ü | § | § | ê | ê | Ú | Æ | é | Õ | Õ | ¿ | Ç | ] | ħ | Ć | |
101 1110 | 94 | 5E | ^ | ^ | ^ | ^ | ^ | ^ | ˆ | ˆ | ˆ | ˆ | ˆ | ˆ | Ü | ˆ | ˆ | ^ | ˆ | î | É | Á | Ö | ˆ | ˆ | ˆ | ˆ | ¿ | ¿ | ˆ | Č | ||
101 1111 | 95 | 5F | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ | _ |
110 0000 | 96 | 60 | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | ` | é | ` | á | µ | µ | ô | ô | ó | ð | ù | ` | ` | ` | ` | ` | ċ | ž | |||
111 1011 | 123 | 7B | { | { | { | { | { | { | { | { | æ | æ | æ | ä | ä | ä | é | é | é | é | é | é | þ | à | ã | ã | ° | ´ | ´ | Ġ | š | ||
111 1100 | 124 | 7C | | | | | | | | | | | | | | | | | | | ø | ø | ø | ö | ö | ö | ö | ù | ù | ù | ù | í | | | ò | ç | ç | ñ | ñ | ñ | Ż | đ | |
111 1101 | 125 | 7D | } | } | } | } | } | } | } | } | å | å | å | å | å | ü | ü | è | è | è | è | ú | æ | è | õ | õ | ç | ç | [ | Ħ | ć | ||
111 1110 | 126 | 7E | ~ | ‾ | ‾ | ‾ | ‾ | ˜ | ˜ | ˜ | ¯ | | | ˜ | ü | ß | ˝ | ¨ | ¨ | û | û | á | ö | ì | ° | ˜ | ˜ | ¨ | ¨ | Ċ | č |
In the table above, the cells with non-white background emphasize the differences from the US variant used in the Basic Latin subset of ISO/IEC 10646 and Unicode.
The characters displayed in cells with red background could be used as combining characters, when preceded or followed with a backspace C0 control. This encoding method may be considered deprecated.
Later, when wider character sets gained more acceptance, ISO 8859, vendor-specific character sets and eventually Unicode became the preferred methods of coding most of these variants.
Variants of ASCII that are not ISO 646
There are also some 7-bit character sets that are not officially part of the ISO 646 standard. Examples include:
- 7-bit Greek, ELOT 927. The Greek alphabet is mapped to positions 0x61–0x71 and 0x73–0x79, on top of the Latin lowercase letters.
- 7-bit Cyrillic, KOI-7 or Short KOI. The Cyrillic characters are mapped to positions 0x60–0x7E, on top of the Latin lowercase letters. Superseded by the KOI-8 variants.
- 7-bit Hebrew, SI 960. The Hebrew alphabet is mapped to positions 0x60–0x7A, on top of the lowercase Latin letters (and grave accent for aleph). 7-bit Hebrew was always stored in visual order. This mapping with the high bit set, i.e. with the Hebrew letters in 0xE0–0xFA, is ISO 8859-8.
- 7-bit Arabic, ASMO 449. The Arabic alphabet is mapped to positions 0x41–0x5A and 0x60–0x6A, on top of both uppercase and lowercase Latin letters. This mapping with the high bit set is ISO 8859-6.
See also
- Basic Latin (disambiguation)
- ASCII
- Extended ASCII
- EBCDIC
- ISO/IEC 2022 Information technology: Character code structure and extension techniques
- ISO 8859
- ISO 10646
- ISO/IEC 6937 (ANSI)
- C0 Controls and Basic Latin, in Unicode
- C Trigraph
- ITU T.50
- ISO/IEC JTC 1/SC 2
References
- ^ "Invariant Character Handling". NISO Circulation Interchange Protocol. NCIP Standing Committee (NCIP-SC).
- ^ Yuri Demchenko. "Section 4. INTERNATIONAL STANDARDIZATION OF 7-BIT CODES, ISO 646". Terena.org. Retrieved 2012-08-13.
External links
- The ECMA-6 Standard
- Zeichensatz nach ISO 646 (ASCII) (in German)
- History at GNU Aspell website
- Character Tables by Koichi Yasuoka (see Domestic ISO646 Character Tables and Quasi-ISO646 Character Tables)
- Turkish Text Deasciifier a tool (based on statistical pentagram analysis of the Turkish language) which reverts an ASCII'fied Turkish text by determining the appropriate (but ambiguous) diacritics normally needed in Turkish but missing in the US-ASCII set.