문자 인코딩

두벌식 한글 자판.
문자 인코딩(文字 - , character encoding) 또는 텍스트 인코딩(text encoding) 또는 줄여서 인코딩은 사용자가 입력한 문자나 기호들을 컴퓨터가 이해할 수 있는 포맷으로 만드는 것을 말한다. 넓은 의미의 컴퓨터는 이러한 신호를 입력받고 처리하는 기계를 뜻하며, 신호 처리 시스템을 통해 이렇게 처리된 정보를 사용자가 이해할 수 있게 된다. 이 신호를 입력하는 인코딩과 문자를 해독하는 디코딩을 하기 위해선 미리 정해진 기준을 바탕으로 입력과 해독이 처리되어야 하는데, 이를 문자열 세트 또는 문자셋이라고 한다. 
초기 보급형 컴퓨터의 문자열 세트는 아스키나 EBCDIC이 표준이었으나, 이러한 문자열 세트는 세계 곳곳에 인터넷이 보급되며 표현해야 할 문자가 증가하면서 이러한 문자셋들을 표준화하기 위해 많은 대체 방식이 개발되었다. 표준 문자셋을 개발하는 것에 대한 논의가 이어졌고, 후에는 유니코드가 등장하게 되었다.

**문자열 세트의 종류**
 ISO 646
** ASCII- EBCDIC
** CP37
** CP930
** CP1047- ISO 8859:
** ISO 8859-1 서유럽
** ISO 8859-2 서유럽 및 중앙유럽
** ISO 8859-3 서유럽 및 남유럽 (터키어, 몰타어, 에스페란토어)
** ISO 8859-4 서유럽 및 발트 해 국가 (리투아니아어, 에스토니아어, 라프어)
** ISO 8859-5 키릴 문자
** ISO 8859-6 아랍 글자
** ISO 8859-7 그리스 글자
** ISO 8859-8 히브리 글자
** ISO 8859-9 서유럽 (개정된 터키어 문자 집합 포함)
** ISO 8859-10 서유럽 (개정된 노르딕어를 위한 문자 집합 및 완전 아이슬란드 문자 집합 포함)
** ISO 8859-11 타이어
** ISO 8859-13 발트어, 폴란드어
** ISO 8859-14 켈트어 (아일랜드 게일어, 스코틀랜드어, 웨일스어)
** ISO 8859-15 유로 기호 및 ISO 8859-1에 대한 다른 항목 추가
** ISO 8859-16 중앙 유럽, 남유럽어 (폴란드어, 체코어, 슬로바키아어, 세르비아어, 크로아티아어, 헝가리어, 알바니아어, 로마어, 독일어, 이탈리아어)- CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869- MS 윈도 문자 집합:
** Windows-1250 라틴 글자를 이용하는 중앙 유럽 언어 (폴란드어, 체코어, 슬로바키아어, 헝가리어, 슬로베니아어, 세르비아어, 크로아티아어, 로마어, 알바니아어)
** Windows-1251 키릴 문자
** Windows-1252 서양어
** Windows-1253 그리스어
** Windows-1254 터키어
** Windows-1255 히브리어
** Windows-1256 아랍어
** Windows-1257 발트어
** Windows-1258 베트남어- 맥 오에스 로만 (Mac OS Roman)- KOI8-R, KOI8-U, KOI7- MIK- ISCII 인도- TSCII 타밀어- VISCII 베트남어- JIS X 0208 일본어
** Shift JIS (마이크로소프트 코드 페이지 932는 Shift_JIS의 파생)
** EUC-JP
** ISO-2022-JP- JIS X 0213는 JIS X 0208의 확장판.
** Shift_JIS-2004
** EUC-JIS-2004
** ISO-2022-JP-2004- 중국어 간체자 GB
** GB 2312
** GBK (마이크로소프트 코드 페이지 936)
** GB 18030- 대만 Big5 (더 잘 알려진 종류가 마이크로소프트 코드 페이지 950)- 홍콩 HKSCS- 한국어
** KS X 1001은 2바이트 한국어 문자 인코딩 표준이다.
** EUC-KR
** ISO-2022-KR- 유니코드 (UTF-8도 참조)- ANSEL 또는 ISO/IEC 6937

**문자 인코딩의 구성**
문자 정보는 정보를 표현하기 위한 글자들의 집합을 정의한 것으로, 직접적으로 사용되지 않을 수도 있고 한 문자 집합을 여러 문자 인코딩에서 쓸 수도 있다. 특히 집합 안의 문자들에 음수가 아닌 정수들을 배정한 것을 부호화된 문자 집합(coded character set, CCS)라 한다. 문자 집합은 ASCII와 같이 더 이상의 문자가 추가될 수 없기도 하고, 유니코드와 같이 문자가 계속 추가될 수 있기도 하다.
일반적으로 문자 집합과 문자 인코딩은 어떤 문자를 사용할 수 있으며 어떤 식으로 표현되는지를 나타낸다는 데서 동의어로 취급되기도 한다. 역사적인 이유로 MIME이나 그에 기반한 시스템은 문자 집합("charset")을 문자 인코딩을 나타내는 데 사용한다.
문자 인코딩 형태(character encoding form, CEF)는 특정한 문자 집합 안의 문자들을 컴퓨터 시스템에서 사용할 목적으로 일정한 범위 안의 정수(코드값)들로 변환하는 방법이다. 여기에는 유니코드 코드 포인트를 8비트 숫자의 집합으로 나타내는 UTF-8이나, 16비트 숫자의 집합으로 나타내는 UTF-16, 그리고 대부분의 일반적인 문자 인코딩들이 포함된다.
문자 인코딩 구조(character encoding scheme, CES)는 문자 인코딩 형태로 변환된 코드값을 옥텟 기반의 시스템에서 사용하기 위하여 옥텟들로 변환하는 방법이다. 대부분의 문자 인코딩 형태는 이 과정에서 아무런 일도 일어 나지 않으며, 8비트 이상의 숫자를 사용하는 UTF-16과 같은 문자 인코딩 형태의 경우 엔디안을 지정해 주는 것으로 충분하다. 여기에는 ISO 2022와 같은 복합 인코딩이나, SCSU와 같은 압축 방법 등이 속한다.

**퍼센트 인코딩**
퍼센트 인코딩(percent-encoding)은 URL에 문자를 표현하는 문자 인코딩 방법이다. 이 방법에 따르면 알파벳이나 숫자 등 몇몇 문자를 제외한 값은 옥텟 단위로 묶어서, 16진수 값으로 인코딩한다.

**문자깨짐 현상**
utf-8이나 euc-kr같은 서로 다른 문자 인코딩 방식은 텍스트나 문자의 깨짐 현상을 일으키는 주요 원인중 하나이다. 

**같이 보기**
 문자 인코딩의 목록- 문자 집합(문자 집합의 목록)- 제어 문자- 코드 페이지

**각주**

**외부 링크**
 en  Character sets registered by Internet Assigned Numbers Authority- en  Unicode Technical Report #17: Character Encoding Model
*