22.02.15 인코딩과 디코딩

Saparian·2022년 2월 14일
0

오늘의배움

목록 보기
16/53

컴퓨터는 숫자밖에 모른다.

때문에 우리가 사용하는 문자를 컴퓨터에서 사용하기 위해서는 숫자로 변환해줘야 한다.
이러한 과정을 인코딩(encoding)이라고 한다.

반대로 컴퓨터가 사용하고 있는 코드(숫자표현)을 사람이 뜯어봐야하는 경우도 생긴다.
코드를 사람이 사용하는 문자로 변환하는 과정을 디코딩(decoding)이라고 한다.

인코딩 기준

사람의 언어를 컴퓨터 언어로 바꾸는 기준은 여러가지가 있다.

  • 아스키코드 (ASCII)
  • 확장 아스키 코드(Extended ASCII)
  • 코드페이지(code page, cp)
  • 유니코드

아스키코드

가장 기본인 코드이다.
특징은 아래와 같다.

  • 7bit(128개)로 이루어져있으며, 처음 32개는 제어문자라 출력을 할 수 없다.
  • 33번째 이후 문자부터 숫자와 영문자(대문자, 소문자)가 연속적으로 배치되어 있다.
    이러한 배치는 프로그래밍에서 유용하게 쓸 수 있다.

확장 아스키

아스키코드는 7bit이다.
그러나 데이터는 보통 byte 단위로 다뤄지기 때문에 1bit가 남은 걸 활용해서 추가로 문자를 적용한게 확장아스키이다.

확장아스키의 경우는 여러 국가와 기업에서 서로의 필요에 따라 다르게 정의해서 사용하고 있다.

ISO(국제표준화기구)에서 발표한 몇가지 표준 중 하나는 'ISO 8859-1(ISO Latin 1)' 이다.
이 버전은 서유럽에서 일반적으로 사용하는 문자들을 포함한다.

코드페이지(code page, cp)

PC를 사용하는 지역이나 국가에 따라서 여러버전의 확장아스키가 필요했다.
코드페이지의 경우는 IBM사에서 도입한 코드이며 각각의 코드페이지는 번호를 붙여서 사용했다.

한글윈도우을 사용하는 경우 'CP 949'
영문윈도우을 사용하는 경우 'CP 437'

이런 형식으로 사용하고 있다.

유니코드

다른 언어를 사용하는 컴퓨터끼리도 문서교환이 활발해지면서 모든 문자를 통합하고자 하였고 그에 따라 발생한 것이 유니코드이다.

유니코드는 UTF-8, UTF-16, UTF-32등 여러가지 종류가 있다.

Java는 UTF-16을 사용하고 있다.

  • 모든 문자의 크기가 동일(2byte)해서 다루기가 편리함
  • 1byte로 표현하던 영문과 숫자가 2byte로 커져서 문서의 크기가 커진다.

일반적인 웹문서에서는 UTF-8을 사용한다.

  • 전송속도가 중요하기때문에 문서의 크기가 작을 수록 유리하다.

그러나 UTF-8의 경우는 영문과 숫자는 1byte, 한글은 3byte로 표현되어서, 문자의 크기가 통일되지않는다.
문자 크기가 가변적인 점은 프로그래밍할때에 다루기 어렵게 만들 수 있다.

0개의 댓글