이것이 점프 투 공작소

인코딩(Encoding)에 대해 알아보자 본문

해킹,보안

인코딩(Encoding)에 대해 알아보자

겅겅겅 2023. 8. 22. 20:18

인코딩이란?

데이터를 컴퓨터가 이해 할 수 있는 바이너리 형식으로 변환하는 과정입니다.

텍스트 데이터를 변환하는 문자인코딩, 이미지나 동영상같은 미디어 파일을 변환하는 인코딩이 있습니다.

인코딩을 함으로써 형식의 변환뿐만 아니라 압축된 형식으로 변환되기에 저장공간 또한 절약 할 수 있습니다.

바이너리 형식에서 사람이 이해 할 수 있는 문자로 변환하는 작업은 디코딩이라 합니다.

문자 셋  (Character Set)

인코딩과 디코딩은 특정한 규칙에 의해 이루어집니다.

이러한 규칙을 문자 셋(Character Set)이라고 하며 ASCII, 유니코드가 대표적인 문자셋입니다.

문자 인코딩 (Character Encoding)

문자를 컴퓨터가 이해 할 수 있는 바이너리 데이터로 변환시키는 인코딩 방식입니다.

한글,영어와 같은 문자들을 0,1 데이터로 변환하는 인코딩입니다.

ASCII 인코딩

최초의 문자셋인 ASCII Character Set을 이용하여 인코딩을 하는 방식입니다.

아래 표에 대입하여 인코딩을 진행합니다.

ASCII는 7비트로 구성되어 있으며, 0부터 127까지의 정수 값을 각각 특정 문자나 제어 문자에 대응시킵니다.

영문 알파벳, 숫자, 특수 문자 등을 표현하는 데 사용되며, 간단한 텍스트 기반 데이터를 다룰 때 주로 사용됩니다.

URL

URL 인코딩은 웹에서 사용되는 URL(Uniform Resource Locator)에 포함된 문자열을 인코딩하는 방식입니다.

알파벳이나 숫자는 유지되지만 URL에서 특정 문자나 공백 등이 포함되면 문제가 발생할 수 있기에 인코딩이 필요합니다.

예를들어 공백은 %20으로 변환됩니다.

HTML

HTML 인코딩은 HTML 문서에서 사용되는 특수 문자를 표현하기 위해 문자열을 변환하는 인코딩방식입니다.

특정 문자를 이스케이프 시퀀스(escape sequence)라는 특수한 문자열로 변환합니다.

이스케이프 시퀀스(escape sequence)는 &로 시작하며, 문자의 의미를 유지하면서도 HTML에서 해석되지 않도록 합니다.

 

대표적인 이스케이프 시퀀스는 아래와 같습니다.

  • &lt; : <
  • &gt; : >
  • &amp; : &
  • &quot; : "
  • &apos; : '

BASE64

64개의 문자를 사용하여 인코딩하는 방식입니다.

이메일, 이미지 데이터, URL 링크, WEB의 기본 인증 정보같은 상황에 사용됩니다.

인코딩 데이터의 크기가 3의 배수가 아니면 패딩값 '='를 사용하여 길이를 맞춥니다.

UNICODE

유니코드(Unicode) 인코딩은 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하기 위한 표준 방식입니다. 

'A'는 65, '가'는 44032 와 같이 모든 문자에 고유한 코드 포인트 (숫자)를 할당하여 문자를 표현합니다.

저희가 자주 사용하는 UTF-8 또한 유니코드 인코딩 방식입니다.

UTF-8

가변 길이 인코딩 방식으로 영어 및 ASCII 문자는 1바이트, 다른 문자는 2바이트 이상으로 표현됩니다.

추가로 한글은 3바이트로 표현됩니다.

ASCII와의 호환성이 뛰어나고 저장공간을 효율적으로 사용합니다.

일반적으로 리눅스 환경에서 사용됩니다.

UTF-16

2바이트 또는 4바이트로 문자를 표현합니다.

BMP(기본 다국어 평면)의 문자는 2바이트로, 이외의 문자는 4바이트로 표현됩니다.

주로 윈도우, 자바 환경에서 사용됩니다.

UTF-32

모든 문자를 고정된 4바이트로 표현합니다.

모둔 문자를 표현하는데 효율적이지만 저장공간과 전송 대역폭의 소모가 크다는 단점이 있습니다.

주로 임베디드 시스템과 몇가지 언어 라이브러리에서 사용됩니다