위키독:문자 인코딩

1. 개요[원본 편집]

컴퓨터는 0과 1, 즉 2진수만 가지고 모든 데이터를 표현하기 때문에 문자를 표현할 숫자 코드가 필요하게 되었다. 이에 따라 각 컴퓨터마다 독자적인 문자 인코딩을 사용하기 시작했고, 미국 내에서 이를 통합하기 위해 ASCII 코드가 만들어져 사용되어 왔다. 대부분의 문자 코드 인코딩은 ASCII 코드 방식을 확장한 것이다.

 

2. 문자 인코딩 표준의 종류[원본 편집]

문자 인코딩 표준은 크게 지역 표준과 유니코드 표준의 두 가지로 나눌 수 있다.

2.1. 지역 표준의 예[원본 편집]

  • CP-949 (한국어 문자 인코딩)
  • EUC-KR (CP-949의 Windows 구현 문자 인코딩 버전)
  • SHIFT JIS (일본어 문자 인코딩)
  • EBCDIC (IBM 컴퓨터 문자 인코딩)
  • ISO 8859 (유럽 문자 인코딩)
  • GBK (중국어 문자 인코딩의 Windows 구현 버전)

2.2. 유니코드 표준[원본 편집]

유니코드는 표준화된 문자 코드가 있으며, 세부적으로 이를 각 바이트 단위로 쪼개어 저장하는 방식인 UTF-XX가 있다. 유니코드 협회에서 표준을 관리하며 2016년 8월 기준 최신 유니코드 버전은 9.0이다.

  • UNICODE (모든 문자를 표현할 수 있는 표준화된 문자 인코딩)
    • UTF-16 (2바이트 방식 유니코드 문자 인코딩)
    • UTF-16 BE (2바이트 빅 엔디안 방식 유니코드 문자 인코딩)
    • UTF-32 (4바이트 방식 유니코드 문자 인코딩)
    • UTF-32 BE (4바이트 빅 엔디안 방식 유니코드 문자 인코딩)
    • UTF-8 (1바이트 단위 가변 길이 부호화 유니코드 문자 인코딩)

 

UTF-8의 경우, ASCII 문자만 포함된 경우 동일하게 표현된다는 장점을 가진다. 

3. 표현의 예[원본 편집]

컴퓨터는 문자를 숫자의 형태로 저장하며, ASCII 코드로 예를 들면 "A"라고 하는 문자는 실질적으로 "0x41", 그러니까 "65"라는 숫자를 통해 표현한다. 이 숫자는 그대로 65로 사용할 수도 있지만 "A"로도 표현할 수 있다.

Hello, world!

위 문장은 ASCII 코드라고 가정했을 때, 아래 헥사 코드로 저장된다(엔디안 방식은 무시한다).

0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x77 0x6F 0x72 0x6C 0x64 0x21

위 헥사 코드는 각 자리 4바이트 10진수 숫자로 표현했을 때 아래와 같은 숫자가 된다.

1,214,606,444 1,865,162,871 1,869,769,828 553,648,1281 

숫자로 표현된 자료는 우리가 어떻게 이용하느냐에 따라 문자로 표현하느냐 숫자로 표현하느냐를 정할 수 있기 때문에 이처럼 문자 인코딩을 숫자로 표현할 수 있는 것이다.


4. 문자 깨짐[원본 편집]

예를 들어 한국어 웹 브라우저 환경에서 일본 홈페이지 등을 들어갔을 때 문자가 이상한 한글 문자나 ?로 깨질 때가 있다. 이는 SHIFT JIS 등으로 인코딩 된 문자를 EUC-KR이나 UTF-8 등으로 인코딩 된 것으로 보고 처리할 때 발생하는 문제이다. 올바른 문자 인코딩으로 조정해주면 문자 깨짐 문제를 해결할 수 있다.

 

텍스트 파일 등의 내용이 깨진 경우에는 따로 프로그램을 이용하여 문자 인코딩을 변경해주어야 한다.