코드 페이지
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
코드 페이지는 컴퓨터 시스템에서 각 문자 인코딩에 할당된 고유한 16비트 번호 체계로, IBM에서 처음 도입되었다. IBM은 PC DOS, MS-DOS와 같은 운영체제에서 코드 페이지 번호를 사용하기 시작했으며, 1990년대에는 IBM과 마이크로소프트가 분리되면서 두 회사 모두 자체적인 코드 페이지 번호 목록을 유지하게 되었다. 코드 페이지는 ASCII의 상위 집합으로, 다양한 언어의 문자와 그래픽 요소를 인코딩하는 데 사용되었으며, 유니코드의 등장으로 코드 페이지의 필요성이 줄어들었다. IBM, 마이크로소프트, HP 등 다양한 회사에서 자체적인 코드 페이지를 사용했으며, 윈도우, MS-DOS, 매킨토시 등 운영체제 에뮬레이션을 위한 코드 페이지도 존재한다. 오래된 문자 인코딩 방식은 문서화 부족, 확장 추가 등의 문제점을 가지고 있었으며, 유니코드와 UTF-8의 등장으로 이러한 문제점이 해결되었다. 개인용 코드 페이지도 존재했으나, 유니코드의 등장으로 사용 빈도가 줄어들었으며, IBM은 개인용 코드 페이지를 위한 ID 범위를 예약했다.
IBM은 컴퓨터 시스템에서 사용되는 각 문자 인코딩에 고유한 16비트 번호를 할당하는 체계를 도입했다. 이 번호 매기기 방식은 IBM에서 시작되었으며, 가장 작은(첫 번째) 숫자는 IBM의 EBCDIC 인코딩 변형에 할당되었고, 그보다 약간 큰 숫자는 PC 하드웨어에서 사용되는 IBM의 확장 ASCII 인코딩 변형을 나타낸다.
이러한 코드 페이지들은 자주 MS-DOS와 같은 운영 체제들에서 쓰이며 박스 형태의 문자를 많이 포함하고 있다.
2. 코드 페이지 번호 체계
PC DOS 버전 3.3(및 거의 동일한 MS-DOS 3.3)이 출시되면서 IBM은 코드 페이지 번호 시스템을 일반 PC 사용자에게 도입했다. 코드 페이지 번호(및 "코드 페이지"라는 구문)는 운영체제(OS)의 모든 부분이 사용하는 문자 인코딩을 체계적으로 설정할 수 있는 새로운 명령에 사용되었다.
1990년대에 IBM과 Microsoft가 협력을 중단한 후, 두 회사는 서로 독립적으로 할당된 코드 페이지 번호 목록을 유지하여 일부 충돌하는 할당이 발생했다. 오라클도 자체적인 숫자 할당 목록을 가지고 있다. IBM의 현재 할당은 CCSID 저장소에 나열되어 있으며, Microsoft의 할당은 MSDN에 문서화되어 있다.
2. 1. ASCII와의 관계
대부분의 코드 페이지는 128개의 제어 코드와 인쇄 가능한 문자를 나타내는 7비트 코드인 ASCII의 상위 집합이다. 과거에는 ASCII 코드 집합의 8비트 구현에서 최상위 비트를 0으로 설정하거나 네트워크 데이터 전송에서 패리티 비트로 사용했다. 최상위 비트를 문자 데이터를 나타내는 데 사용할 수 있게 되면서 총 256개의 문자 및 제어 코드를 나타낼 수 있게 되었다. 대부분의 공급업체(IBM 포함)는 이 확장 범위를 사용하여 다양한 언어에서 사용되는 문자와 텍스트 전용 출력 장치에서 원시 그래픽을 모방할 수 있는 그래픽 요소를 인코딩했다. 이러한 "확장 ASCII 문자 집합"에 대한 공식적인 표준은 존재하지 않았으며, 공급업체는 IBM이 EBCDIC 인코딩의 변형에 대해 그랬듯이 이러한 변형을 코드 페이지라고 불렀다.
2. 2. 유니코드와의 관계
유니코드는 현재 사용되거나 역사적으로 사용되었던 모든 인간 언어의 모든 문자를 단일 문자 집합에 포함하려는 시도이다. 이는 디지털 방식으로 저장된 텍스트를 처리할 때 서로 다른 코드 페이지를 구별할 필요성을 없애준다. 유니코드는 설계 과정에서 일부 코드 페이지를 1:1로 복사하여 많은 레거시 코드 페이지와의 역호환성을 유지하려고 시도한다. 유니코드의 명시적인 설계 목표는 모든 일반적인 레거시 코드 페이지 간의 왕복 변환을 허용하는 것이었지만, 이 목표가 항상 달성된 것은 아니다.
IBM 및 마이크로소프트와 같은 일부 공급업체는 유니코드 인코딩에 코드 페이지 번호를 할당했다. 이러한 관례를 통해 바이너리 저장 데이터를 만났을 때 코드 페이지 번호를 올바른 디코딩 알고리즘을 식별하는 메타데이터로 사용할 수 있다.
3. IBM 코드 페이지
원래의 IBM 개인용 컴퓨터 코드 페이지(번호 437)가 국제용으로 설계된 것이 아니기 때문에, 호환되지 않는 비호환 변형이 들어가기도 했다. 마이크로소프트는 이러한 것들을 OEM 코드 페이지들로 일컫는다. 보기는 아래와 같다:
현대의 응용 프로그램들, 운영 체제, 그리고 프로그래밍 언어에서, IBM 코드 페이지들은 ISO 8859-1과 유니코드와 같은 더 새로운 국제 표준이 세워졌기 때문에 없는 것으로 표시된다.
3. 1. EBCDIC 기반 코드 페이지
EBCDIC 기반 코드 페이지는 IBM 메인프레임 컴퓨터의 EBCDIC 문자 집합에서 IBM이 사용한다.[1]
이 외에도 다양한 EBCDIC 기반 코드 페이지가 존재하며, 각 코드 페이지는 특정 언어 또는 지역에 맞게 문자 집합을 정의한다. 예를 들어, 코드 페이지 37은 미국/캐나다에서 사용되는 CECP (유로와 동일: 1140)이고, 코드 페이지 273은 독일/오스트리아에서 사용되는 CECP (유로와 동일: 1141)이다. 코드 페이지 1047은 라틴 1/오픈 시스템을 위한 코드 페이지이다.
3. 2. DOS 코드 페이지
이 코드 페이지들은 MS-DOS와 같은 운영 체제에서 쓰이며 박스 형태의 문자를 많이 포함하고 있다. IBM에서 PC DOS 운영 체제에서 사용되는 이 코드 페이지는 원래 IBM PC 및 그 클론과 함께 사용된 그래픽 어댑터의 텍스트 모드 하드웨어에 직접 내장되었다. 여기에는 글꼴이 포함된 ROM 칩을 물리적으로 교체해야만 문자 집합을 변경할 수 있었던 원래 MDA 및 CGA 어댑터가 포함된다. 이러한 어댑터의 인터페이스(VGA와 같은 이후 모든 어댑터에서 에뮬레이션됨)는 일반적으로 각 글꼴/인코딩에 256개의 문자만 있는 단일 바이트 문자 집합으로 제한되었다(VGA는 약간 더 큰 문자 집합에 대한 부분적인 지원을 추가했지만).
437은 원래의 IBM PC 코드 페이지이다. 마이크로소프트는 이러한 것들을 OEM 코드 페이지들로 일컫는다. 코드 페이지 932, 934, 936, 938, 942, 943, 944, 946, 948, 949, 951 등은 동아시아 언어(CJK) 지원을 위한 코드 페이지이다.
현대의 응용 프로그램들, 운영 체제, 그리고 프로그래밍 언어에서, IBM 코드 페이지들은 ISO 8859-1과 유니코드와 같은 더 새로운 국제 표준이 세워졌기 때문에 없는 것으로 표시된다. 오래된 하드웨어, 프로토콜 및 파일 형식을 처리할 때는 이러한 코드 페이지를 지원해야 하는 경우가 많지만, 새로운 설계에는 특히 유니코드와 같은 새로운 인코딩 시스템을 권장한다. DOS 코드 페이지는 일반적으로 .CPI 파일에 저장된다.
3. 3. IBM AIX 코드 페이지
이 코드 페이지들은 IBM의 AIX 운영 체제에서 사용된다. 이는 유닉스 계열 운영 체제와 같이 ISO에 따라 사용하도록 설계된 여러 문자 집합을 에뮬레이션한다.
ISO 8859 계열 코드 페이지(813, 819, 901, 912, 913, 914, 915, 916, 919, 920, 921, 922, 923 등)를 지원한다.
코드 페이지 819는 라틴-1, ISO/IEC 8859-1과 동일하며 약간 수정된 명령을 사용하여 MS-DOS 컴퓨터가 해당 인코딩을 사용할 수 있도록 한다. 이는 IBM AS/400 미니 컴퓨터와 함께 사용되었다.
3. 4. IBM OS/2 코드 페이지
코드 페이지 1004는 OS/2 운영 체제에서 사용되는 라틴-1 확장 코드 페이지이다. 현대의 응용 프로그램들, 운영 체제, 그리고 프로그래밍 언어에서, IBM 코드 페이지들은 ISO 8859-1과 유니코드와 같은 더 새로운 국제 표준이 세워졌기 때문에 없는 것으로 표시된다.
3. 5. Windows 에뮬레이션 코드 페이지
IBM은 마이크로소프트 윈도우 문자 집합을 에뮬레이션하기 위해 이 코드 페이지들을 사용한다. 이러한 코드 페이지의 대부분은 마이크로소프트 코드 페이지와 동일한 번호를 가지고 있지만, '''정확히''' 동일하지는 않다. 그러나 일부 코드 페이지는 마이크로소프트가 개발한 것이 아니라 IBM에서 새로 개발되었다. 1361은 한국어 (JOHAB)을 지원한다. 1363은 윈도우 한국어 (통합 한글 코드, CP949)를 지원하며, 1126과 1362를 합쳐서 만들어졌다.
3. 6. Macintosh 에뮬레이션 코드 페이지
IBM은 매킨토시 문자 집합을 에뮬레이션하기 위해 이 코드 페이지들을 사용한다. 이 코드 페이지에는 10000(매킨토시 로마어 인코딩)(몇몇의 다른 맥 문자열 세트를 따름), 10007(매킨토시 키릴 자모 인코딩), 10029(매킨토시 중앙유럽어 인코딩)이 포함된다. 또한, 일본어 지원을 위한 932, GBK 중국어 간체자 지원을 위한 936, 한국어 지원을 위한 949, 중국어 번체자(대만) 지원을 위한 950이 있다. 유니코드 지원을 위해서는 1200(UCS-2LE, little-endian), 1201(UCS-2BE, big-endian), 65000(UTF-7), 65001(UTF-8)이 사용된다. 아랍어 지원을 위한 ASMO449+, 불가리아어 및 러시아어 지원을 위한 MIK도 있다.
현대의 응용 프로그램, 운영 체제, 프로그래밍 언어에서는 IBM 코드 페이지들이 ISO 8859-1과 유니코드와 같은 더 새로운 국제 표준이 세워졌기 때문에 없는 것으로 표시된다.
3. 7. Adobe 에뮬레이션 코드 페이지
IBM은 어도비 문자 집합을 에뮬레이션하기 위해 다음 코드 페이지들을 사용한다.3. 8. HP 에뮬레이션 코드 페이지
IBM은 HP 문자 집합을 에뮬레이트하기 위해 이 코드 페이지들을 사용한다.
현대의 응용 프로그램들, 운영 체제, 그리고 프로그래밍 언어에서, IBM 코드 페이지들은 ISO 8859-1과 유니코드와 같은 더 새로운 국제 표준이 세워졌기 때문에 없는 것으로 표시된다.
3. 9. DEC 에뮬레이션 코드 페이지
IBM은 DEC 문자 집합을 에뮬레이트하기 위해 이 코드 페이지들을 사용한다.3. 10. IBM 유니코드 코드 페이지
IBM은 유니코드 인코딩을 지원하기 위해 다양한 코드 페이지를 사용한다. 코드 페이지 1200은 UTF-16BE 유니코드(빅 엔디안)와 IBM 개인 사용 영역(PUA)을 지원하며[3], 코드 페이지 1201은 UTF-16BE 유니코드(빅 엔디안)를 지원한다.[3] 코드 페이지 1202는 UTF-16LE 유니코드(리틀 엔디안)와 IBM PUA를 지원하고[3], 코드 페이지 1203은 UTF-16LE 유니코드(리틀 엔디안)를 지원한다.[3] 코드 페이지 1208은 UTF-8 유니코드와 IBM PUA를 지원하며[3], 코드 페이지 1209는 UTF-8 유니코드를 지원한다.[3]
이 외에도 ISO 10646 UCS-BMP (유니코드 6.0 기반)를 지원하는 코드 페이지 1400[3], ISO 10646 UCS-SMP (유니코드 6.0 기반)를 지원하는 코드 페이지 1401[3], ISO 10646 UCS-SIP (유니코드 6.0 기반)를 지원하는 코드 페이지 1402[3], ISO 10646 UCS-SSP (유니코드 4.0 기반)를 지원하는 코드페이지 1414[3], ISO 10646 UCS-PUP15 (유니코드 4.0 기반)를 지원하는 코드 페이지 1446[3], ISO 10646 UCS-PUP16 (유니코드 4.0 기반)를 지원하는 코드 페이지 1447[3] 등이 있다.
4. 마이크로소프트 코드 페이지
마이크로소프트는 자체 운영 체제인 윈도우에서 사용하기 위한 코드 페이지들을 개발했다.
; Windows 코드 페이지
윈도우 코드 페이지는 마이크로소프트 윈도우 운영 체제에서 사용되는 코드 페이지로, ANSI 코드 페이지라고도 불린다. 첫 번째 윈도우 코드 페이지인 1252는 ISO 8859-1의 초안을 기반으로 확장되었으며, ISO 8859-1에서 정의한 C1 제어 코드(0x80-0x9F) 대신 인쇄 가능한 문자를 추가로 사용한다.[4]
윈도우 코드 페이지에는 다음과 같은 종류가 있다.
- 42 – Windows Symbol
- 874 – 윈도우 태국어
- 1250 – 윈도우 중앙 유럽
- 1251 – 윈도우 키릴 문자
- 1252 – 윈도우 서부
- 1253 – 윈도우 그리스어
- 1254 – 윈도우 터키어
- 1255 – 윈도우 히브리어
- 1256 – 윈도우 아랍어
- 1257 – 윈도우 발트어
- 1258 – 윈도우 베트남어
마이크로소프트는 새로운 애플리케이션 개발에 윈도우 코드 페이지 대신 UTF-8 또는 UCS-2/UTF-16을 사용할 것을 권장한다.
; DBCS 코드 페이지
이 코드 페이지들은 여러 CJK 언어에 대한 DBCS 문자 인코딩을 나타낸다. 마이크로소프트 운영 체제에서, 이들은 해당 로캘에 대한 "OEM" 및 "Windows" 코드 페이지로 모두 사용된다.
CP932는 마이크로소프트 표준 문자 집합을 시프트 부호화 표현한 것이다. 소위 일본어 시프트 JIS 코드이다.
; MS-DOS 코드 페이지
이러한 코드 페이지들은 자주 MS-DOS와 같은 운영 체제들에서 쓰이며 박스 형태의 문자를 많이 포함하고 있다. 원래의 IBM 개인용 컴퓨터 코드 페이지(번호 437)가 국제용으로 설계된 것이 아니기 때문에, 호환되지 않는 비호환 변형이 들어가기도 했다. 마이크로소프트는 이러한 것들을 OEM 코드 페이지들로 일컫는다.
이 코드 페이지는 마이크로소프트가 MS-DOS 운영 체제에서 사용한다. 마이크로소프트는 이를 OEM 코드 페이지라고 부르는데, 이는 마이크로소프트나 표준 단체가 아닌, 자사 하드웨어와 함께 배포하기 위해 MS-DOS를 라이선스한 원래 장비 제조업체가 정의했기 때문이다. 이러한 코드 페이지의 대부분은 해당 IBM 코드 페이지와 동일한 번호를 가지고 있지만, 일부는 ''정확히'' 동일하지 않다.
- 437 — 원래의 IBM PC 코드 페이지
- 737 — 그리스어
- 850 — "다중 언어 (라틴 1)" (서양 유럽 언어)
- 852 — "슬라브어 (라틴 2)" (동유럽 언어)
- 855 — 키릴 자모 알파벳
- 857 — 튀르키예어
- 858 — "다중 언어" - 유로 기호
- 860 — 포르투갈어
- 861 — 아이슬란드어
- 863 — 프랑스 캐나다어
- 865 — 북유럽어
- 862 — 히브리어
- 866 — 키릴 자모 알파벳
- 869 — 그리스어
- 708 – 아랍어 (ASMO 708)
- 720 – 아랍어 (투명 ASMO)
- 851 – 그리스어
- 859 – 라틴-9
- 864 – 아랍어
- 866 – 벨라루스어, 러시아어, 우크라이나어
; Macintosh 에뮬레이션 코드 페이지
마이크로소프트는 애플 매킨토시 문자 집합을 에뮬레이션하기 위해 다음 코드 페이지들을 사용한다.
- 10000 - 매킨토시 로마어 인코딩 (몇몇의 다른 맥 문자열 세트를 따름)
- 10007 - 매킨토시 키릴 자모 인코딩
- 10029 - 매킨토시 중앙유럽어 인코딩
- 10001 - 애플 일본어
- 10002 - 애플 번체 중국어 (Big5)
- 10003 - 애플 한국어
- 10004 - 애플 아랍어
- 10005 - 애플 히브리어
- 10006 - 애플 그리스어
- 10008 - 애플 간체 중국어 (GB 2312)
- 10010 - 애플 루마니아어
- 10017 - 애플 우크라이나어
- 10021 - 애플 태국어
- 10079 - 애플 아이슬란드어
- 10081 - 애플 터키어
- 10082 - 애플 크로아티아어
- 932 - 일본어 지원
- 936 - GBK 중국어 간체자 지원
- 949 - 한국어 지원
- 950 - 중국어 번체자 (대만) 지원
- 1200 - UCS-2LE 유니코드 little-endian
- 1201 - UCS-2BE 유니코드 big-endian
- 65000 - UTF-7 유니코드
- 65001 - UTF-8 유니코드
- ASMO449+ - 아랍어 지원
- MIK - 불가리아어, 러시아어 지원
; 기타 마이크로소프트 코드 페이지
마이크로소프트는 10000(매킨토시 로마어 인코딩), 10007(매킨토시 키릴 자모 인코딩), 10029(매킨토시 중앙유럽어 인코딩) 등 매킨토시 운영체제 문자열 세트를 지원한다. 또한, 932(일본어), 936(GBK 중국어 간체), 949(한국어), 950(중국어 번체)와 같은 아시아 언어 지원 코드 페이지와, 1200(UCS-2LE 유니코드 little-endian), 1201(UCS-2BE 유니코드 big-endian), 65000(UTF-7 유니코드), 65001(UTF-8 유니코드) 등의 유니코드 지원, ASMO449+(아랍어), MIK(불가리아어, 러시아어) 등을 지원한다.
현대 응용 프로그램, 운영 체제, 프로그래밍 언어에서는 IBM 코드 페이지가 ISO 8859-1과 유니코드와 같은 새로운 국제 표준으로 대체되어 표시되지 않는다.
마이크로소프트 윈도우에 특화된 코드 페이지 번호는 다음과 같다. IBM은 다른 번호를 사용할 수 있으며, 이는 유닉스와 유사한 운영 체제와 같이 ISO에 따라 사용하도록 설계된 여러 문자 집합을 에뮬레이션한다.
- 20000(번체 중국어 CNS), 20001(번체 중국어 TCA), 20002(번체 중국어 ETEN), 20003(번체 중국어 IBM5500), 20004(번체 중국어 텔레텍스트), 20005(번체 중국어 Wang)
- 20105(IA5 IRV), 20106(IA5 독일어 (DIN 66003), 20107(IA5 스웨덴어 (SEN 850200 C)), 20108(IA5 노르웨이어 (NS 4551-2))
- 20127(US-ASCII), 20261(CCITT T.61), 20269(ISO 6937)
- 20290(EBCDIC의 일본어)
- 20866(KOI8-R)
- 20932(EUC-JP)
- 21866(KOI8-U)
- 28591(ISO-8859-1), 28592(ISO-8859-2), 28593(ISO-8859-3), 28594(ISO-8859-4), 28595(ISO-8859-5), 28596(ISO-8859-6), 28597(ISO-8859-7), 28598(ISO-8859-8), 28599(ISO-8859-9), 28600(ISO-8859-10), 28601(ISO-8859-11), 28603(ISO-8859-13), 28604(ISO-8859-14), 28605(ISO-8859-15), 28606(ISO-8859-16)
- 38596, 38598(ISO-8859-6, ISO-8859-8)
; 마이크로소프트 유니코드 코드 페이지
마이크로소프트는 유니코드 인코딩을 지원하기 위해 다양한 코드 페이지를 사용한다. 코드 페이지 1200은 UCS-2LE(리틀 엔디안)를, 코드 페이지 1201은 UCS-2BE(빅 엔디안)를 나타낸다. UTF-7은 코드 페이지 65000으로, UTF-8은 코드 페이지 65001로 표현된다.
이 외에도 마이크로소프트는 다양한 언어 및 문자 집합을 지원하기 위해 여러 코드 페이지를 사용한다. 예를 들어, 코드 페이지 949는 한국어를, 코드 페이지 936은 GBK 중국어 간체자를 지원한다.
4. 1. Windows 코드 페이지
윈도우 코드 페이지는 마이크로소프트 윈도우 운영 체제에서 사용되는 코드 페이지로, ANSI 코드 페이지라고도 불린다. 첫 번째 윈도우 코드 페이지인 1252는 ISO 8859-1의 초안을 기반으로 확장되었으며, ISO 8859-1에서 정의한 C1 제어 코드(0x80-0x9F) 대신 인쇄 가능한 문자를 추가로 사용한다.[4]윈도우 코드 페이지에는 다음과 같은 종류가 있다.
- 42 – Windows Symbol
- 874 – 윈도우 태국어
- 1250 – 윈도우 중앙 유럽
- 1251 – 윈도우 키릴 문자
- 1252 – 윈도우 서부
- 1253 – 윈도우 그리스어
- 1254 – 윈도우 터키어
- 1255 – 윈도우 히브리어
- 1256 – 윈도우 아랍어
- 1257 – 윈도우 발트어
- 1258 – 윈도우 베트남어
마이크로소프트는 새로운 애플리케이션 개발에 윈도우 코드 페이지 대신 UTF-8 또는 UCS-2/UTF-16을 사용할 것을 권장한다.
4. 2. DBCS 코드 페이지
이 코드 페이지들은 여러 CJK 언어에 대한 DBCS 문자 인코딩을 나타낸다. 마이크로소프트 운영 체제에서, 이들은 해당 로캘에 대한 "OEM" 및 "Windows" 코드 페이지로 모두 사용된다.CP932는 마이크로소프트 표준 문자 집합을 시프트 부호화 표현한 것이다. 소위 일본어 시프트 JIS 코드이다.
4. 3. MS-DOS 코드 페이지
이러한 코드 페이지들은 자주 MS-DOS와 같은 운영 체제들에서 쓰이며 박스 형태의 문자를 많이 포함하고 있다. 원래의 IBM 개인용 컴퓨터 코드 페이지(번호 437)가 국제용으로 설계된 것이 아니기 때문에, 호환되지 않는 비호환 변형이 들어가기도 했다. 마이크로소프트는 이러한 것들을 OEM 코드 페이지들로 일컫는다.이 코드 페이지는 마이크로소프트가 MS-DOS 운영 체제에서 사용한다. 마이크로소프트는 이를 OEM 코드 페이지라고 부르는데, 이는 마이크로소프트나 표준 단체가 아닌, 자사 하드웨어와 함께 배포하기 위해 MS-DOS를 라이선스한 원래 장비 제조업체가 정의했기 때문이다. 이러한 코드 페이지의 대부분은 해당 IBM 코드 페이지와 동일한 번호를 가지고 있지만, 일부는 ''정확히'' 동일하지 않다.
- 437 — 원래의 IBM PC 코드 페이지
- 737 — 그리스어
- 850 — "다중 언어 (라틴 1)" (서양 유럽 언어)
- 852 — "슬라브어 (라틴 2)" (동유럽 언어)
- 855 — 키릴 자모 알파벳
- 857 — 튀르키예어
- 858 — "다중 언어" - 유로 기호
- 860 — 포르투갈어
- 861 — 아이슬란드어
- 863 — 프랑스 캐나다어
- 865 — 북유럽어
- 862 — 히브리어
- 866 — 키릴 자모 알파벳
- 869 — 그리스어
- 708 – 아랍어 (ASMO 708)
- 720 – 아랍어 (투명 ASMO)
- 851 – 그리스어
- 859 – 라틴-9
- 864 – 아랍어
- 866 – 벨라루스어, 러시아어, 우크라이나어
4. 4. Macintosh 에뮬레이션 코드 페이지
마이크로소프트는 애플 매킨토시 문자 집합을 에뮬레이션하기 위해 다음 코드 페이지들을 사용한다.- 10000 - 매킨토시 로마어 인코딩 (몇몇의 다른 맥 문자열 세트를 따름)
- 10007 - 매킨토시 키릴 자모 인코딩
- 10029 - 매킨토시 중앙유럽어 인코딩
- 932 - 일본어 지원
- 936 - GBK 중국어 간체자 지원
- 949 - 한국어 지원
- 950 - 중국어 번체자 (대만) 지원
- 1200 - UCS-2LE 유니코드 little-endian
- 1201 - UCS-2BE 유니코드 big-endian
- 65000 - UTF-7 유니코드
- 65001 - UTF-8 유니코드
- ASMO449+ - 아랍어 지원
- MIK - 불가리아어, 러시아어 지원
- 10001 - 애플 일본어
- 10002 - 애플 번체 중국어 (Big5)
- 10003 - 애플 한국어
- 10004 - 애플 아랍어
- 10005 - 애플 히브리어
- 10006 - 애플 그리스어
- 10008 - 애플 간체 중국어 (GB 2312)
- 10010 - 애플 루마니아어
- 10017 - 애플 우크라이나어
- 10021 - 애플 태국어
- 10079 - 애플 아이슬란드어
- 10081 - 애플 터키어
- 10082 - 애플 크로아티아어
4. 5. 기타 마이크로소프트 코드 페이지
마이크로소프트는 10000(매킨토시 로마어 인코딩), 10007(매킨토시 키릴 자모 인코딩), 10029(매킨토시 중앙유럽어 인코딩) 등 매킨토시 운영체제 문자열 세트를 지원한다. 또한, 932(일본어), 936(GBK 중국어 간체), 949(한국어), 950(중국어 번체)와 같은 아시아 언어 지원 코드 페이지와, 1200(UCS-2LE 유니코드 little-endian), 1201(UCS-2BE 유니코드 big-endian), 65000(UTF-7 유니코드), 65001(UTF-8 유니코드) 등의 유니코드 지원, ASMO449+(아랍어), MIK(불가리아어, 러시아어) 등을 지원한다.현대 응용 프로그램, 운영 체제, 프로그래밍 언어에서는 IBM 코드 페이지가 ISO 8859-1과 유니코드와 같은 새로운 국제 표준으로 대체되어 표시되지 않는다.
마이크로소프트 윈도우에 특화된 코드 페이지 번호는 다음과 같다. IBM은 다른 번호를 사용할 수 있으며, 이는 유닉스와 유사한 운영 체제와 같이 ISO에 따라 사용하도록 설계된 여러 문자 집합을 에뮬레이션한다.
- 20000(번체 중국어 CNS), 20001(번체 중국어 TCA), 20002(번체 중국어 ETEN), 20003(번체 중국어 IBM5500), 20004(번체 중국어 텔레텍스트), 20005(번체 중국어 Wang)
- 20105(IA5 IRV), 20106(IA5 독일어 (DIN 66003), 20107(IA5 스웨덴어 (SEN 850200 C)), 20108(IA5 노르웨이어 (NS 4551-2))
- 20127(US-ASCII), 20261(CCITT T.61), 20269(ISO 6937)
- 20290(EBCDIC의 일본어)
- 20866(KOI8-R)
- 20932(EUC-JP)
- 21866(KOI8-U)
- 28591(ISO-8859-1), 28592(ISO-8859-2), 28593(ISO-8859-3), 28594(ISO-8859-4), 28595(ISO-8859-5), 28596(ISO-8859-6), 28597(ISO-8859-7), 28598(ISO-8859-8), 28599(ISO-8859-9), 28600(ISO-8859-10), 28601(ISO-8859-11), 28603(ISO-8859-13), 28604(ISO-8859-14), 28605(ISO-8859-15), 28606(ISO-8859-16)
- 38596, 38598(ISO-8859-6, ISO-8859-8)
4. 6. 마이크로소프트 유니코드 코드 페이지
마이크로소프트는 유니코드 인코딩을 지원하기 위해 다양한 코드 페이지를 사용한다. 코드 페이지 1200은 UCS-2LE(리틀 엔디안)를, 코드 페이지 1201은 UCS-2BE(빅 엔디안)를 나타낸다. UTF-7은 코드 페이지 65000으로, UTF-8은 코드 페이지 65001로 표현된다.이 외에도 마이크로소프트는 다양한 언어 및 문자 집합을 지원하기 위해 여러 코드 페이지를 사용한다. 예를 들어, 코드 페이지 949는 한국어를, 코드 페이지 936은 GBK 중국어 간체자를 지원한다.
5. HP 심볼 집합
HP는 자체 문자 집합 또는 다른 공급업체의 문자 집합을 인코딩하기 위해 일련의 심볼 집합을 개발했다. 이 심볼 집합은 일반적으로 7비트 문자 집합이며, ASCII 문자 집합과 연결되어 8비트 문자 집합을 구성한다.
HP는 다양한 심볼 셋을 개발했는데, 주요 심볼 셋은 다음과 같다.
- 심볼 셋 0E: HP 로마 확장 - 악센트 문자가 있는 7비트 문자 집합 (IBM에서 코드 페이지 1050으로 코딩)
- 심볼 셋 0G: HP 7비트 독일어
- 심볼 셋 0L: HP 7비트 PC 라인 (IBM에서 코드 페이지 1055으로 코딩)
- 심볼 셋 0M: HP 수학-7
- 심볼 셋 0T: HP 태국어-8
- 심볼 셋 1S: HP 7비트 스페인어
- 심볼 셋 1U: HP 7비트 고딕 법률 (IBM에서 코드 페이지 1052으로 코딩)
- 심볼 셋 4Q: HP 라인 드로우 (IBM에서 코드 페이지 1056으로 코딩)
- 심볼 셋 4U: HP 로마-9 - 로마-8 + €
- 심볼 셋 7J: HP 데스크탑
- 심볼 셋 7S: HP 7비트 유럽 스페인어
- 심볼 셋 8E: HP 동부-8
- 심볼 셋 8G: HP 그리스어-8 (IR 088 기반, ELOT 927 기반 아님)
- 심볼 셋 8H: HP 히브리어-8
- 심볼 셋 8I: MS 라인드로우 (ASCII + HP PC 라인)
- 심볼 셋 8K: HP 가나-8 (ASCII + 일본어 가타카나)
- 심볼 셋 8L: HP 라인드로우 (ASCII + HP 라인 드로우)
- 심볼 셋 8M: HP 수학-8 (ASCII + HP 수학-8)
- 심볼 셋 8R: HP 키릴 문자-8
- 심볼 셋 8S: HP 7비트 라틴 아메리카 스페인어
- 심볼 셋 8T: HP 터키어-8
- 심볼 셋 8U: HP 로마-8 (ASCII + HP 로마 확장, IBM에서 코드 페이지 1051로 코딩)
- 심볼 셋 8V: HP 아랍어-8
- 심볼 셋 9K: HP 한국어-8
- 심볼 셋 9T: PC 8T (코드 페이지 437-T, 코드 페이지 857 아님)
- 심볼 셋 9V: Windows용 라틴어 / 아랍어 (코드 페이지 1256 아님)
- 심볼 셋 11U: PC 8D/N (코드 페이지 437-N, IBM에서 코드 페이지 1058로 코딩, 코드 페이지 865 아님)
- 심볼 셋 14G: PC-8 그리스어 대체 (코드 페이지 437-G, 코드 페이지 737과 거의 동일)
- 심볼 셋 0D: ISO 60: 7비트 노르웨이어
- 심볼 세트 0F: ISO 25: 7비트 프랑스어
- 심볼 세트 0H: HP 7비트 히브리어 — 사실상 SI 960 이스라엘 표준과 동일
- 심볼 세트 0I: ISO 15: 7비트 이탈리아어
- 심볼 세트 0K: ISO 14: 7비트 일본어 가타카나
- 심볼 세트 0N: ISO 8859-1 라틴 1 (초기에는 "고딕-1", IBM에서 코드 페이지 1053으로 코딩)
- 심볼 세트 0R: ISO 8859-5 라틴/키릴 문자 (1986년 버전 — IR 111)
- 심볼 세트 0S: ISO 11: 7비트 스웨덴어
- 심볼 세트 0U: ISO 6: 7비트 미국어
- 심볼 세트 0V: 아랍어
- 심볼 세트 1D: ISO 61: 7비트 노르웨이어
- 심볼 세트 1E: ISO 4: 7비트 영국어
- 심볼 세트 1F: ISO 69: 7비트 프랑스어
- 심볼 세트 1G: ISO 21: 7비트 독일어
- 심볼 세트 1K: ISO 13: 7비트 일본어 라틴 문자
- 심볼 세트 1T: Windows 태국어 (사실상 874와 동일)
- 심볼 세트 2K: ISO 57: 7비트 중국어 간체 라틴 문자
- 심볼 세트 2N: ISO 8859-2 라틴 2
- 심볼 세트 2S: ISO 17: 7비트 스페인어
- 심볼 세트 2U: ISO 2: 7비트 국제 참조 버전
- 심볼 세트 3N: ISO 8859-3 라틴 3
- 심볼 세트 3R: PC-866 러시아어 (사실상 코드 페이지 866과 동일)
- 심볼 세트 3S: ISO 10: 7비트 스웨덴어
- 심볼 세트 4N: ISO 8859-4 라틴 4
- 심볼 세트 4S: ISO 16: 7비트 포르투갈어
- 심볼 세트 5M: PS 수학 기호 (사실상 Adobe Symbols와 동일)
- 심볼 세트 5N: ISO 8859-9 라틴 5
- 심볼 세트 5S: ISO 84: 7비트 포르투갈어
- 심볼 세트 5T: Windows 3.1 라틴-5 (사실상 코드 페이지 1254와 동일)
- 심볼 세트 6J: Microsoft Publishing
- 심볼 세트 6M: Ventura 수학
- 심볼 세트 6N: ISO 8859-10 라틴 6
- 심볼 세트 6S: ISO 85: 7비트 스페인어
- 심볼 세트 7H: ISO 8859-8 라틴/히브리어
- 심볼 세트 9E: Windows 3.1 라틴 2 (사실상 코드 페이지 1250과 동일)
- 심볼 세트 9G: Windows 98 그리스어 (사실상 코드 페이지 1253과 동일)
- 심볼 세트 9J: PC 1004
- 심볼 세트 9L: Ventura ITC Zapf Dingbats
- 심볼 세트 9N: ISO 8859-15 라틴 9
- 심볼 세트 9R: Windows 98 키릴 문자 (사실상 코드 페이지 1251과 동일)
- 심볼 세트 9U: Windows 3.0
- 심볼 세트 10G: PC-851 라틴/그리스어 (사실상 코드 페이지 851과 동일)
- 심볼 세트 10J: PS 텍스트 (사실상 Adobe Standard와 동일)
- 심볼 세트 10L: PS ITC Zapf Dingbats (사실상 Adobe Dingbats와 동일)
- 심볼 세트 10N: ISO 8859-5 라틴/키릴 문자 (1988년 버전 — IR 144)
- 심볼 세트 10R: PC-855 키릴 문자 (사실상 코드 페이지 855와 동일)
- 심볼 세트 10T: 텔레텍스
- 심볼 세트 10U: PC-8 (사실상 코드 페이지 437과 동일, IBM에서 코드 페이지 1057로 코딩)
- 심볼 세트 10V: CP-864 (사실상 코드 페이지 864와 동일)
- 심볼 세트 11G: CP-869 (사실상 코드 페이지 869와 동일)
- 심볼 세트 11J: PS ISO 라틴-1 (사실상 Adobe Latin-1과 동일)
- 심볼 세트 11N: ISO 8859-6 라틴/아랍어
- 심볼 세트 12G: PC 라틴/그리스어 (사실상 코드 페이지 737과 동일)
- 심볼 세트 12J: MC 텍스트 (사실상 Macintosh Roman과 동일)
- 심볼 세트 12N: ISO 8859-7 라틴/그리스어
- 심볼 세트 12R: PC Gost (사실상 PC GOST Main과 동일)
- 심볼 세트 12U: PC-850 라틴 1 (사실상 코드 페이지 850과 동일)
- 심볼 세트 13J: Ventura International
- 심볼 세트 13R: PC 불가리아어 (사실상 MIK와 동일)
- 심볼 세트 13U: PC-858 라틴 1 + € (사실상 코드 페이지 858과 동일)
- 심볼 세트 14J: Ventura U. S.
- 심볼 세트 14L: Windows Dingbats
- 심볼 세트 14P: ABICOMP International (사실상 ABICOMP와 동일)
- 심볼 세트 14R: PC 우크라이나어 (사실상 RUSCII와 동일)
- 심볼 세트 15H: PC-862 이스라엘어 (사실상 코드 페이지 862와 동일)
- 심볼 세트 16U: PC-857 라틴 5 (사실상 코드 페이지 857과 동일)
- 심볼 세트 17U: PC-852 라틴 2 (사실상 코드 페이지 852와 동일)
- 심볼 세트 18N: UTF-8
- 심볼 세트 18U: PC-853 라틴 3 (사실상 코드 페이지 853과 동일)
- 심볼 세트 19L: Windows 98 발트어 (사실상 코드 페이지 1257와 동일)
- 심볼 세트 19M: Windows 기호
- 심볼 세트 19U: Windows 3.1 라틴 1 (사실상 코드 페이지 1252와 동일)
- 심볼 세트 20U: PC-860 포르투갈어 (사실상 코드 페이지 860과 동일)
- 심볼 세트 21U: PC-861 아이슬란드어 (사실상 코드 페이지 861과 동일)
- 심볼 세트 23U: PC-863 캐나다 - 프랑스어 (사실상 코드 페이지 863과 동일)
- 심볼 세트 24Q: PC-폴란드 마조비아 (사실상 Mazovia encoding과 동일)
- 심볼 세트 25U: PC-865 덴마크어/노르웨이어 (사실상 코드 페이지 865과 동일)
- 심볼 세트 26U: PC-775 라틴 7 (사실상 코드 페이지 775와 동일)
- 심볼 세트 27Q: PC-8 PC Nova (사실상 PC Nova)
- 심볼 세트 27U: PC 라트비아어 러시아어 (866-라트비아어)
- 심볼 세트 28U: PC 리투아니아어/러시아어 (사실상 코드 페이지 774와 동일)
- 심볼 세트 29U: PC-772 리투아니아어/러시아어 (사실상 코드 페이지 772와 동일)
이 외에도 다양한 코드 페이지들이 HP 심볼 집합으로 사용되었다.
6. 타사 코드 페이지
IBM이나 마이크로소프트에서 공식적으로 지정하지 않은 코드 페이지들이 존재하며, 이들은 번호 충돌 가능성이 있다. 이러한 코드 페이지는 제3자 공급업체에서 독립적으로 할당한 것이며, IBM이나 마이크로소프트에서 사용 중인 등록된 번호와 충돌할 수 있다. 일부는 DOS 3.3에 추가된 코드 페이지 전환보다 앞서 존재했을 수 있다.
- 10000 — 매킨토시 로마어 인코딩
- 10007 — 매킨토시 키릴 자모 인코딩
- 10029 — 매킨토시 중앙유럽어 인코딩
- 932 — 일본어 지원
- 936 — GBK 중국어 간체자 지원
- 949 — 한국어 지원
- 950 — 중국어 번체자 (대만) 지원
- 1200 — UCS-2LE 유니코드 little-endian
- 1201 — UCS-2BE 유니코드 big-endian
- 65000 — UTF-7 유니코드
- 65001 — UTF-8 유니코드
- ASMO449+ — 아랍어 지원
- MIK — 불가리아어, 러시아어 지원
- 100 – DOS 히브리어 하드웨어 폰트 페이지 (HDOS)
- 161 – DOS 아랍어 (ADOS)
- 165 – DOS 아랍어(864 확장) (ADOS)
- 166 – IBM 아랍어 PC (ADOS)
- 770 – DOS 에스토니아어, 라트비아어, 리투아니아어
- 771 – DOS 리투아니아어/키릴 문자 — KBL
- 772 – DOS 리투아니아어/키릴 문자
- 774 – DOS 리투아니아어
- 790 – DOS 폴란드어(마조비아) (곡선 따옴표 포함)
- 991 – DOS 폴란드어(마조비아)
- 999 – DOS 세르보-크로아티아어 I
- 1261 – 윈도우 한국어 IBM-1261 LMBCS-17, 1363과 유사
7. 코드 페이지 할당 목록
ID | 이름 | 설명 | 원본 | 플랫폼 | DOS | OS/2 | Windows | Mac | 기타 | 인코딩 | 비고 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | N/A | 예약됨 | IBM, 마이크로소프트 | N/A | 3.3+ | 1.0+ | ? | ? | ? | 내부 OS 사용 | |
437 | CP437, IBM437 | PC US | IBM | IBM PC | 3.3+ | 1.0+ | 예 | ? | 예 | 8비트 SBCS | |
57344 - 61439 | N/A | 개인 사용 파생 | IBM | N/A | N/A | N/A | N/A | N/A | N/A | 여러 가지 | 개인 사용 코드 페이지 파생 (E000h-EFFFh) |
65280 - 65533 | N/A | 개인 사용 정의 | IBM | N/A | N/A | N/A | N/A | N/A | N/A | 여러 가지 | 개인 사용 코드 페이지 정의 (FF00h-FFFDh) |
65534 | N/A | 예약됨 | IBM, 마이크로소프트 | N/A | ? | ? | ? | ? | ? | 여러 가지 | 내부 OS 사용 (FFFEh) |
65535 | N/A | 예약됨 | IBM, 마이크로소프트 | N/A | 3.3+ | 1.0+ | ? | ? | ? | 여러 가지 | 내부 OS 사용 (FFFFh) |
8. 비판
오래된 문자 인코딩(유니코드와 달리)은 몇 가지 문제점을 가지고 있다.[5] 일부 공급업체는 코드 페이지의 모든 코드 포인트 값의 의미를 충분히 문서화하지 않아 다양한 컴퓨터 시스템에서 텍스트 데이터를 일관되게 처리하는 신뢰성이 떨어진다. 일부 공급업체는 특정 코드 포인트 값을 추가하거나 변경하기 위해 기존 코드 페이지에 독점적인 확장을 추가한다. 예를 들어, Shift JIS에서 바이트 0x5C는 플랫폼에 따라 백슬래시 또는 엔화 기호를 나타낼 수 있다. 유니코드를 사용하지 않는 프로그램에서는 여러 언어를 지원하기 위해 각 문자열/문서에 사용된 코드 페이지를 저장해야 한다.
응용 프로그램은 Windows-1252의 텍스트를 ISO-8859-1로 잘못 레이블할 수 있다. 이 두 코드 페이지의 유일한 차이점은 ISO-8859-1이 제어 문자에 사용하는 0x80-0x9F 범위의 코드 포인트 값이 Windows-1252에서 추가 인쇄 가능한 문자로 사용된다는 것이다. 특히 따옴표, 유로 기호 및 상표 기호 등에 사용된다. 비 Windows 플랫폼의 브라우저는 이러한 문자에 대해 빈 상자 또는 물음표를 표시하여 텍스트를 읽기 어렵게 만드는 경향이 있었다. HTML5에서는 ISO-8859-1을 Windows-1252로 처리하는 것이 W3C 표준으로 제정되었다.[5]
유니코드의 광범위한 문서화, 광대한 문자 레퍼토리 및 문자의 안정성 정책으로 인해 위에 나열된 문제는 유니코드에서는 거의 문제가 되지 않는다. UTF-8은 인터넷에서 코드 페이지 방식을 인기도 측면에서 대체했다.
9. 개인용 코드 페이지
개인용 컴퓨터 초창기에 사용자들은 상주 프로그램 유틸리티를 사용하거나 BIOS EPROM을 재프로그래밍하여 개인 또는 로컬 코드 페이지를 생성하는 경우가 있었다. 어떤 경우에는 비공식 코드 페이지 번호가 만들어지기도 했다(예: CP895).
더 다양한 문자 집합 지원이 가능해지면서 이러한 코드 페이지는 대부분 사용되지 않게 되었지만, Kamenický 또는 체코어 및 슬로바키아어 알파벳용 KEYBCS2 인코딩과 같은 몇 가지 예외가 있었다. 또 다른 문자 집합은 페르시아어 지원을 위해 Iran System Corporation에서 만든 이란 시스템 인코딩 표준이다. 이 표준은 DOS 기반 프로그램에서 이란에서 사용되었으며 Microsoft 코드 페이지 1256이 도입된 후에는 이 표준은 사용되지 않게 되었다. 그러나 이 인코딩을 사용하는 일부 Windows 및 DOS 프로그램은 여전히 사용되고 있으며, 이 인코딩을 사용하는 일부 Windows 글꼴이 존재한다.
이러한 문제를 극복하기 위해 IBM 문자 데이터 표현 아키텍처 레벨 2는 사용자 정의 및 개인 사용 할당을 위해 코드 페이지 ID 범위를 특별히 예약한다. 코드 페이지 범위 57344-61439 (E000h-EFFFh)는 공식적으로 사용자 정의 코드 페이지로 예약되어 있으며, 범위 65280-65533 (FF00h-FFFDh)은 모든 사용자 정의 "개인 사용" 할당을 위해 예약되어 있다. 예를 들어, 코드 페이지 437 (1B5h) 또는 28591 (6FAF)의 등록되지 않은 사용자 지정 변형은 각각 57781 (E1B5h) 또는 61359 (EFAFh)가 될 수 있다. 기존 코드 페이지를 기반으로 하지 않는 등록되지 않은 개인 코드 페이지 등은 65280 (FF00h)과 같은 개인 범위에 할당될 수 있다.
코드 페이지 ID 0, 65534 (FFFEh) 및 65535 (FFFFh)는 DOS와 같은 운영 체제에서 내부적으로 사용하도록 예약되어 있으며 특정 코드 페이지에 할당되어서는 안 된다.
참조
[1]
웹사이트
IBM i Globalization: Code Pages
http://www-03.ibm.co[...]
IBM
[2]
웹사이트
Code Page CPGID 01093 (pdf)
http://www-03.ibm.co[...]
[3]
웹사이트
IBM Coded Character Set Identifier (CCSID)
http://www-01.ibm.co[...]
[4]
서적
ISO/IEC 8859-1:1998(E)
https://www.iso.org/[...]
ISO
2020-10-30
[5]
웹사이트
Encoding
https://encoding.spe[...]
WHATWG
2015-02-04
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com