Gidhub BE Developer

문자열 인코딩 : 아스키 코드(ASCII), EUC-KR, 유니코드(Unicode), UTF-8, UTF-16

2020-06-14
goodGid

문자열 인코딩 개념

  • 문자열 인코딩이란

    2진법을 사용하는 컴퓨터가

    인간의 언어를 일정한 규칙에 따라 2진수로 변환하는 방식이다.

    컴퓨터는 ‘안녕하세요’와 같은 문장을 그대로 읽고 처리할 수 없기 때문이다.

  • 그래서 컴퓨터는

    2진수와 문자를 1:1로 대응하는 규칙을 통해 2진수로 문자를 처리한다.

    ex) ( 2진수 : 0100 0001 ) : ( 문자 : A )


Q. 인터넷에서 글자가 깨지거나 보이지 않는 문제는 왜 발생하는 걸까?

  • 컴퓨터가 처음 등장했을 때

    모든 프로그램은 영어일부 특수 문자만 지원했다.

    그러나 시간이 지나 많은 국가가 컴퓨터를 사용하기 시작했고

    국가별로 사용하는 언어를 표현하고자

    독자적인 규칙을 만들기 시작했다.

    참고로 한국에서는 독자적인 인코딩 방식인 EUC-KR을 만들었다.

  • 독자적인 규칙을 만드는 움직임은

    모든 언어를 같은 규칙으로 표현할 수 있는 유니코드 방식이 등장하면서 통일되었다.

  • 그러나 모든 개발 환경이 유니코드를 동일하게 처리하지 않아

    개발자는 서로 호환되지 않는 유니코드 문자열 인코딩 방식(UTF-8, UTF-16, UTF-32) 중 하나를 택해야 한다.


문자 집합 vs 문자열 인코딩

문자 집합

  • 사용할 수 있는 문자들의 집합

    ex) 유니코드, ISO-8859, ASCII 등

문자열 인코딩

  • 문자를 코드로 표현하는 방식

    ex) 유니코드라는 문자 집합 을 표현하는 문자열 인코딩은 UTF-8, UTF-16, UTF-32 등이 있다.


아스키 코드(ASCII)

  • 처음으로 표준을 정립한 문자열 인코딩 방식으로 아직도 많이 사용된다.

  • 사용할 수 있는 문자의 종류에는

    대/소문자, 공백 및 특수 문자들이 있으며

    문자를 표현할 때는 0 ~ 127까지

    총 128개의 숫자를 사용한다.

  • 그림에서 알 수 있듯이

    아스키 코드는 영어를 제외한 다른 언어를 표현할 수 없다.

    그래서 각 나라에서 아스키코드 대신

    독자적인 문자 집합과 인코딩 방식을 만들었다.

  • 아스키코드에 대한 자세한 개념은 아스키코드(ASCII Code)을 참고하자.


EUC-KR

  • 한국에서는 EUC-KR 문자 집합을 만들었다.

    한국어 문자 집합으로

    문자 하나를 표현하기 위해 2바이트를 사용한다.

    단 아스키코드 문자를 표현할 때는

    1바이트를 사용하기 때문에 아스키코드와 호환이 된다.

EUC-KR 특징

2바이트 저장

  • 좌측에 있는 코드(b0a0, b0b0 등)를 기준으로

    오른쪽으로 한 칸씩 이동할 때마다 1바이트를 더한다.

    ex) ‘가’ 문자는 b0a0 코드 줄의 2번째 칸에 있어 1바이트를 더해 b0a1로 표현한다.

    b0a1는 0xb0, 0xa1로 나뉘어

    총 2바이트를 사용하게 된다.

완성형 코드

  • 모든 글자가 완성된 형태로만 존재하는 완성형 코드이다.

    따라서 조합해 문자를 만들 수 없으므로 표현할 수 없는 한글이 일부 존재하지만

    그 문자는 잘 사용되지 않는다.

지원 언어

  • EUC-KR에는 한글뿐만 아니라

    숫자, 특수 기호, 영문, 한문, 일어가 존재한다.


UTF-8, UTF-16


Reference


Index