지금까지 개발 병아리로서 이런 저런 인코딩을 간접적으로 보고 접해왔는데
여러가지 인코딩이 어떤 이유에서 생긴건지 형태에 따라 무슨 차이가 있는지 궁금해 찾아보게 되었다.
출처 : https://ko.wikipedia.org/wiki/%EB%AC%B8%EC%9E%90_%EC%9D%B8%EC%BD%94%EB%94%A9
인코딩이란 ? 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 의미
이를 디코딩 하기 위해선 (해독하는 것을 의미)
미리 정해진 기준을 바탕으로 해독해야하는데 이를 문자열 세트 또는 문자셋이라고 한다.
인코딩의 종류에는 ASCII, URL, HTML, Base64등이 있음 (실제론 더 많다.)
1. ASCII
최초의 문자코드, 라틴 문자, 숫자, 몇몇 특수문자를 128개의 코드값에 1:1 대응시키는 방법.
제어문자가 포함되어 있어서, 이들을 제외하면 사실 화면에 출력되는 문자는 128개보다 적다.
아스키가 널리 사용되면서 다양한 아스키 기반의 확장 인코딩들이 등장했으며, 이들을 묶어서 아스키라고 부르기도 한다.
현재 대부분의 문자 인코딩이 아스키에 기초를 두고 있다.
2. Hex
16진수 인코딩을 의미.
(0~9 + A ~ F) 2진수를 많이 사용하고 있는 컴퓨터언어에서 2진수를 대신하여 많이 씌고 있음
왜냐면 2진수 사용보다 더 자릿수를 짧게 표현할 수 있기 때문이다.
색상코드에 많이 사용되며 또한 URL에서 많이 사용된다.
공간 효율성이 base32나 base64보다 떨어진다.
(원 데이터 byte의 2배, base64는 1.33..배)
하지만 이진 데이터를 일반 텍스트로 나타내는 간단하고 일반적으로 많이 사용되는 방법이다.
3. URL
URL도 인코딩을 하게 되는데 URL은 ASCII 문자를 이용해서 전송되게 되어있기 때문이다.
해당 인코딩은 Percent-encoding을 이용한다.
https://ko.wikipedia.org/wiki/%ED%8D%BC%EC%84%BC%ED%8A%B8_%EC%9D%B8%EC%BD%94%EB%94%A9
인코딩을 하며 공백을 더하기 기호 또는 %20으로 바꾼다.
4. base64
이진데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념
글자 그대로 번역하여 보면 64진법이라는 뜻.
특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다.
Base 64에는 어떤 문자와 기호를 쓰느냐에 따라 여러 변종이 있지만, 잘 알려진 것은 모두 처음 62개는 알파벳 A-Z, a-z와 0-9를 사용하고 있으며 마지막 두 개를 어떤 기호를 쓰느냐의 차이만 있다.