우리가 개발을 하다 보면, 인코딩(Encoding) 또는 디코딩(Decoding) 같은 단어를 많이 접하게 된다.
텍스트 처리, API 통신, 이미지나 파일 업로드, 로그 출력 등 다양한 상황에서 이 개념은 자주 등장한다.
하지만 “인코딩/디코딩이 뭐야?” 라고 물어보면 설명하기 애매할 때가 있다.
그런 상황을 대비하기 위해 이 글에서 인코딩/디코딩에 대해 정리할 것 이다.
인코딩(Encoding)은 어떤 데이터를 다른 형식으로 변환하는 과정을 말한다.
컴퓨터가 데이터를 처리하거나, 저장하거나, 전송하기 쉽게 만드는 것 이다.
예를 들면 “안녕하세요!”와 같은 문장은 컴퓨터가 직접 이해할 수 없다.
컴퓨터는 0과 1로 이루어진 이진수만 처리할 수 있기 때문이다
그래서 문자를 바이트(Byte)로 변환하는 작업이 필요하다.
이 과정이 바로 문자 인코딩이다.
위와 같이 인코딩은 단순히 문자를 바꾸는 것 뿐만이 아니라, 파일, 이미지, 네트워크 데이터, 명령어 등 다양한 정보에도 적용될 수 있다.
디코딩(Decoding)은 인코딩 된 데이터를 원래의 형태로 복원하는 과정이다.
컴퓨터가 처리할 수 있도록 바꿨던 데이터를, 사람이 이해할 수 있게 다시 바꾸는 과정이라고 보면 된다.
예를 들어, UTF-8로 인코딩된 문자열을 다시 사람이 읽을 수 있는 문자열로 만드는 것이 디코딩이다.
인코딩과 디코딩은 쌍을 이루는 개념임으로, 한 쪽만 이루어져서는 의미가 없다.
인코딩이 잘 못되면 디코딩도 제대로 이루어질 수 없다.