[문자열] 인코딩과 디코딩

Ethan·2022년 6월 15일
0

컴퓨터는 문자열을 읽지 못한다.

그래서 텍스트 데이터를 처리하려면 컴퓨터가 읽을 수 있는 형태로 변환해야 한다. 이걸 인코딩이라고 한다.

위 그림에서 볼 수 있듯이 1바이트는 8비트다. 그리고 컴퓨터는 n개의 바이트로 이루어진 word를 기본 단위로 사용한다. 예를 들어서 흔히 듣는 32비트 컴퓨터, 64비트 컴퓨터의 차이는 각각 word 크기가 4바이트냐 8바이트냐이다.

텍스트를 변환하는 작업에 이 개념이 중요하다. 왜냐면 CPU가 바이트 단위로 처리를 하기 때문이다. 정확히는 한 번에 word의 크기만큼의 바이트를 처리한다.

따라서 인코딩은 텍스트를 바이트 단위에 맞춰 변환하는 작업이다.
당연히 디코딩은 바이트 단위의 데이터를 텍스트로 변환하는 작업이 된다.

1비트는 0 or 1의 값을 가지므로 1바이트는 282^8개의 값을 가질 수 있다. 단순하게 생각하면 1바이트만으로도 한글의 자모음과 1:1 대응하고도 한참 남는 크기다. 그렇지만 세상에 언어가 한글만 있는 건 아니다.

그래서 유니코드를 사용한다.

유니코드


파이썬에도 유니코드 함수가 있다.

  • ord() : 해당 문자에 대응하는 유니코드 숫자 반환
  • chr(): 해당 숫자에 대응하는 유니코드 문자 반환

파이썬은 (엄밀히는 파이썬 3부터) UTF-8을 디폴트로 삼고 있다. 그래서 인코딩 작업을 하면 별도의 변환 작업이 필요없다. 해당 문자열이 디코딩됐는지 인코딩됐는지만 고려하면 된다.

파이썬 2는 내부적으로 유니코드가 기본값이 아니라서 아스키->유니코드 변환을 따로 해야 한다.

profile
재미있게 살고 싶은 대학원생

0개의 댓글