TIL - 인코딩(encoding)과 디코딩(decoding)

jake·2023년 1월 19일
0

TIL

목록 보기
53/54
post-thumbnail

인코딩과 디코딩

인코딩과 디코딩에 대해서 간략하게 찾아보았다.

인코딩

정의

인코딩이란 정해진 규칙에 따라 코드화, 암호화, 부호화 하는 것이다.
그 이유는 표준화, 보안(암호화), 저장공간(압축) 절약 등이 있다.
ex) 나 너가 좋다! 라는 말을 상대방만 알아들을 수 있게 암호화 하는 것이 인코딩이다.

인코딩 종류

문자 인코딩 (character encoding) 6가지

문자를 bytes 바이트로 변환(인코딩) 시키는 것이다. (1byte = 8bit 이고 bit = binaryData (2진수)로 표현하게되는 것이다) -> 간단하게 복잡한 신호를 0과 1 2진수로 변환 시키는 것
컴퓨터는 오직 binary Data만 이해하기 떄문에 숫자표현코드로 변환시켜야한다.

  1. HTML Encoding -> HTML 페이지를 올바르게 나타내기위해 사용되는 인코딩

  2. URL Encoding (Uniform Resoure Locator) (ASCII character-set사용) -> url을 전송할 수 있는 형태로 변환해주는 인코딩이다. 전송할 수 있는 형태는 ASCII character-set인데, 이것이 아닌 특수문자, 한글 같은경우 encodeURLComponent를 해주어야한다. encodeURLComponent를 해주면 ASCII가 아닌 문자를 % + 16진수 숫자로 변경해준다. (encodeURL도 있다.)

  3. UNICODE Encoding

  • UTF-8 Encoding
    가장 기준이 되는 인코딩으로 ASCii 코드와 직접적으로 호환가능하여 레거시 apps를 업그레이드할때 많이 사용된다.
    가장 적은 메모리를 사용하나 각 글자의 넓이를 보장할 수 없어 1,2,3 또는 4의 넓이를 가지게되어 string 조작에 어려움이 있다.

  • UTF-32 Encoding
    최대 메모리를 사용하고 각글자는 고정된 4bytes wide 넓이를 가지고 있어 string 조작이 수월하다.
    때문에 string byte의 length길이로 아주 간단하기 글자의 수 를 구할 수 있다.

  • UTF-16 Encoding
    UTF-8, UTF-32을 반반 섞은 인코딩이 가능하다. UTF-16은 글자의 대부분 고정넓이 16bit값으로 하나 중국어나, 음악기호같은거에는 예외가 있다. UTF-8보다는 큰 메모리를 UTF-32보다는 작은 메모리를 사용한다.

  • 결론
    위에 3개 모두 byte sequences에 따라 글자를 표현해 내는 것이 다를 뿐이다. 각 os에 맞는 방식을 쓰자

  1. Base64 Encoding
    간단하게 2진수 데이터 (binary data)를 ascii문자로 인코딩 하는데 사용된다.
    binary data는 이미지,압축텍스트, 암호화 데이터 등이있다.
    base64 인코딩은 cookies나 다른 매개변수로 이동시킬때도 사용되는데 암호화 개념으로 사용된다고 보면된다.

  2. ASCII
    ASCII를 설명하기전에 위에 말한 위에 4개는 ASCII를 기초에 두고있는 확장 버전 같은 느낌이다. ASCII의 표준 기준을 사용하여 URL인코딩하고, 문자 인코딩하고, 이미지 인코딩하고 한것이기 때문이다.
    ASCII는 7비트 부호체계이고 8비트가 아닌 7비트로 사용되는 이유는 패리티 비트라고 1bit를 에러검출용으로 사용하기 때문이다. 자세한사항은 아래 참고사이트 참고하자

  3. Hex Encoding (base16)
    각각의 byte를 두자리의 base 16으로 인코딩하고 다시 ascii로 인코딩하는 방식이다.
    binary data를 plaing text로 나타낼때 자주 사용하는 방식이다.
    근데, base64도 binary data를 base16도 binary data를 text로 변환하는데 무슨차이인가?
    byte를 나타내는 방법과 약간의 효율이다. base64는 3byte당 4자, hex는 1byte에 2자를 사용한다.

사진 비디오 인코딩(video and image encoding)

인코딩 되면 내용물은 동일하지만 사이즈가 압축되어 저장공간을 절약하고 mail이나 다운로드 방식으로 쉽게 이동/전달이 가능하다. 이미지의 경우 base64를 많이 사용한다.

디코딩

디코딩이란 복화화, 역코드화라고 한다.
위에 언급한 인코딩들은 데이터 표준화(url에 전송 등..), 데이터 암호화, 데이터 압축 등을 위해 인코딩 한다. 이 인코딩된 데이터를 다시 같은 방식으로 디코딩하면 데이터를 읽을수 있다.

참고사이트

인코딩, 디코딩 정확히 이해하기
ACII코드란?
인코딩 디코딩 설명 유튜브

profile
열린 마음의 개발자가 되려합니다

0개의 댓글