페미위키:위키독/아름드리/문자 인코딩

최근 편집: 2023년 1월 6일 (금) 19:38

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,128<button data-content="마지막 0x21이 33이 아니라 553,648,128인 이유는 4바이트로 표현하면서 맨 앞 바이트에 0x21이 들어갔기 때문이다." data-placement="auto bottom" data-container=".wiki-fnote">1</button> 

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


4. 문자 깨짐

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

 

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