7비트 문자 집합을 정의하는 ISO 표준. 정식 표준 번호는 ISO/IEC 646:1991이며, ECMA-6으로도 표준화되어 있다. 사실 주객전도인게, 이 표준은 1965년1) ECMA-6으로 먼저 표준화된 뒤에 나중에야 ISO 646:1983로 국제 표준이 되었다.
본래는 ASCII(ANSI X3.4)에서 유래하였으며, ASCII에서 특수 문자를 각 언어의 필요에 맞도록 재정의하도록 하여 수십 개의 국가별 변종(national variant)을 사용할 수 있도록 하였다. 이를테면 ISO/IEC 646 US는 ASCII와 동일하며, ISO/IEC 646 KR은 KS X 1003, ISO/IEC 646 JP는 JIS X 0201의 첫 7비트 영역과 동일하다. #$@[\]^`{|}~
를 제외한 다른 문자는 어느 변종에서도 똑갈이 할당되었기에 ISO/IEC 646 INV("invariant")로 지칭되었다.
ISO/IEC 646의 가장 큰 문제는 ASCII에는 있지만 ISO/IEC 646 INV에 없는 문자들이 상당히 자주 쓰였다는 것으로, 이를테면 ISO C 표준화 과정에서는 정확히 이 이유 때문에 삼중자(trigraph)를 추가하는 병크짓삽질을 저지르고 만다. 덕택에 7비트 영역의 변경이 필요하지 않은 8비트 문자 집합인 ISO IEC 8859가 등장하며 ISO/IEC 646은 역사 속으로 사라진다. 그러나 ISO/IEC 646이 문자 집합에 대한 최초의 국제 표준이라는 의의는 있으며, 유니코드의 ISO 표준 번호인 ISO/IEC 10646도 여기서 유래한다.
ISO/IEC 646에서 유래한 문자 집합이 항상 포함해야 하는 변경 불가능(invariant)한 문자들은 ISO/IEC 646 INV라는 이름으로 따로 부르며, 당연하지만 여기 들어 있는 문자는 ASCII와 정확히 동일하다.
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
비어 있는 공간들은 각국이 필요로 하는 문자들을 채워 넣을 수 있도록 하였으며, 그 사용 용도는 크게 다음과 같이 나뉜다.
기존의 ASCII는 이 표준 하에서는 ISO/IEC 646 US라는 이름을 사용한다. 이와는 별개로 문자 집합이 완전히 같은데 특수 문자를 발음 변경 문자로 쓸 수 있게만 한 국제 참조 변종(International Reference Variant; IRV)이 존재한다.
다음 문자 집합은 사실상 ISO/IEC 646을 기반으로 정의되어 있다.