Encoding
)이란 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호(바이너리 데이터)로 만드는 것Decoding
)이란 0과 1로 구성된 바이너리 데이터를 다시 문자로 복구하는 것ASCII
), 엡시딕(EBCDIC
) 등 이었음UNICODE
)Tip! 아스키(
ASCII
)란?
- American Standard Code for Information Interchange의 약자
- 아스키(
ASCII
) 코드는 문자 그대로 미국에서 정의하고 있는 표준, 영문 알파벳을 사용하는 대표적인 문자 인코딩- 초창기 컴퓨터를 기계어만을 사용하여 개발하는 것에 어려움이 있어 문자를 코드화하기 위해 아스키(
ASCII
) 코드가 탄생하게 되었고 대부분의 인코딩이 아스키(ASCII
)에 기초하고 있음
Tip! 유니코드(
UNICODE
)란?
- 한글 뿐만 아니라 중국어, 일본어도 마찬가지로 각자의 언어를 표현할 수 있는 인코딩 방식과 다른 문자열 셋을 사용하기 때문에 모든 언어를 동시에 표현할 수는 없었음
- 결국
전세계의 모든 문자를 하나의 문자 셋으로 표현할 수 없을까?
라는 문제가 등장하게 됨
- 이러한 문제를 해결하기 위해 전세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드(
UNICODE
)- 다양한 언어들을 표현하기 위해 등장한 유니코드는 2바이트로 모든 문자를 표현하는데 아스키코드에 비해서 1바이트가 늘어난거죠.
- 유니코드(
UNICODE
)의 목적은 현존하는 문자 인코딩 방법들을 모두 유니코드(UNICODE
)로 교체하려는 것
Base64
인코딩은 문자열을 아스키(ASCII
)로 인코딩한 후 다시 Base64
코드표를 통해 인코딩을 수행ASCII
)로 인코딩된 문자열을 새로운 Base64
코드표로 인코딩한다는 뜻Tip!
Base64
란?
- 그대로 직역하면 64진법이라는 뜻
- 컴퓨터 분야에서 쓰이는
Base 64
란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 아스키(ASCII
) 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념
- 임의의 바이트 스트림을 화면에 표시할 수 있는 아스키(
ASCII
) 문자들로 바꾸는 인코딩 방식
ASCII
) 인코딩과 같이 문자 셋과 문자 인코딩이 동일한 경우도 있기 때문에 인코딩이 문자 셋을 포함하고 있다고 생각할 수 있음Tip! 추가 내용
UTF-8
- 전세계에서 개발자들이 가장 많이 사용하는 인코딩 방식
- 일반적으로 운영되는 서버들의 운영 체제는 리눅스 계열
- 이러한 리눅스 계열의 대부분은 유니코드(
UNICODE
)를 지원하기 때문에UTF-8
방식을 활용한다면 따로 인코딩 과정을 거치지 않아도 되게끔 인터넷 환경이 주어져 있음UTF-8
방식은 조합형 인코딩 방식으로 주어진 문자들을 하나하나 조합해서 문자를 완성하는 방식- 예시: 'ㄱ' + 'ㅐ' + 'ㅂ' + 'ㅏ' + 'ㄹ' → 개발
EUC-KR
- 이 방식은 글자 하나하나가 완성되어야 하는 방식
- 예시: '개' + '발' → 개발
- 이를 완성형 방식이라고 하는데 컴퓨터에게 주어진 문자표에서 완성된 글자 하나하나를 찾아서 완성해나가는 방식이라고 생각하면 됨
- 얼핏 생각해보면 이 방식은 활용도 면에서 굉장히 안좋은 방식이라고 생각할 수 있는데 문자표에 우리가 표현하고자 하는 언어가 없다면 표현할 수 없기 때문
- 그런데 왜 이 방식을 사용하는걸까?
- 윈도우의 문자 인코딩 방식이 완성형이기 때문
- 사용하는 운영체제의 방식이 완성형이다보니 여기에 맞는 문자인코딩 방식이 필요했고 그 결과가
EUC-KR
의 개발로 이어진 것
KSC5601
을 표준 한글 코드로 정의하고 있는데, 기본은 완성형 한글이고 자모가 입력될 때 글자를 모은 다음 코드 테이블에서 코드를 찾아 치환KSC5601
코드를 기본으로 사용x-www-form-urlencoded
형식으로 인코딩이 됨KSC5601
이 인코딩되어 전달되면 KSC5601
이 왔다고 생각하지 않고 라틴어(ISO-8859-1
)가 왔다고 생각하는 경우 존재ISO-8859-1
ISO-8859-1
형식으로 인코딩하게 됨KSC5601
로 바꿔주면 해결ISO-8859-1
이었던 인코딩 방식을 KSC5601
로 변경해도 한글 깨지는 경우 발견UTF-8
로 변경하면 해결