본문 바로가기
츄Log/기타 끄적

ASCII Code / Unicode / UTF-8 Encoding / URL Encoding

by 츄츄🦭 2023. 12. 6.
728x90

 

안녕하세요!

오늘은 헷갈리는 개념인 인코딩에 대해 한번 정리해보겠습니다.

 

 

인코딩이란 어떤 데이터를 규칙을 가지고 변환하는 행위입니다. 

디코딩은 그 반대겠죠.

 

그럼 문자 인코딩(Charterset Encoding)은 무엇일까요? 

아시다시피 컴퓨터는 모든 데이터를 0과 1인 binary data로 바라봅니다. 그래서 우리는 문자를 컴퓨터가 이해할 수 있는 byte로 변환해야 합니다. 

 

인코딩을 이해하기 전에 먼저 '코드체계'라는 개념을 살펴보겠습니다.

코드체계는 컴퓨터가 이해할 수 있는 2진수로 인코딩 하기 위해 인간의 문자를 숫자에 매핑한 것입니다. 

 

ASCII Code와 Unicode가 이에 해당합니다.

 

1. ASCII Code

출처 : https://ko.wikipedia.org/wiki/ASCII

ASCII Code는 가장 널리 쓰이는 코드체계로 오로지 영문자를 위한 것입니다(Americal Standard Code For Information Interchange). 간단하게 말씀드리면 ASCII는 7bit의 고정 길이 코드 체계로 영문 대/소문자, 숫자, 일부 특수문자들을 표현합니다. 

7bit의 고정길이이기 때문에 1byte로 모든 문자를 표현할 수 있는 것이죠. 

(1bit는 checksum으로 제외합니다) 

 

그럼 한글은 어떻게 표현해야 할까요?

 

이러한 이유로 나온 것이 Unicode입니다. 

2. Unicode

Unicode는 영어 외에 전세계 언어를 커버하고자 나온 것으로 완성형 문자 하나에 숫자를 매핑한 방식입니다. 

16bit로 표현되므로 문자 하나에 4byte로 저장됩니다. 

 

이렇게 코드 체계가 다양하니, 이를 하나로 합쳐줄 인코딩이 필요해졌습니다. 

(뿐만 아니라 유니코드는 영문자도 2byte이상의 공간을 활용하기 때문에 이를 그대로 사용하면 메모리 낭비가 심한 것도 이유 중 하나입니다.)

 

이제 인코딩을 알아보겠습니다.

1. UTF-8 Encoding (Unicode Transformation Format-8bit Encoding)

UTF-8 Encoding은 많이 들어보셨을 것입니다.

위에서 언급한 코드체계들(ASCII, Unicode)를 모두 포함한 문자들을 컴퓨터가 이해할 수 있는 바이트열로 변환하는 가변 길이 문자 인코딩 방식입니다.

UTF-8의 특징은 문자 코드의 범위에 따라 1~4byte로 인코딩되는 가변길이이며, ASCII는 1byte, 한글은 3byte로 표현됩니다. 

 

2. URL Encoding (Uniform Resource Locator Encoding)

URL Encoding은 URL로 사용할 수 없는 문자를 사용할 수 있는 문자로 변환하는 것입니다.

URL에 한글이 들어가면 글자가 '%E9' 처럼 변환되는 것을 보셨을 것입니다. 

인터넷은 데이터를 오로지 ASCII로만 주고받을 수 있는데, ASCII에 없는 문자를 변환해줘야 합니다. 

이 때 변환 규칙은 UTF-8 인코딩을 사용하게 되고, '%' 문자가 앞에 붙습니다. 

 

URL Encoding에서 한 가지 더 포인트는 URL을 만드는데 예약된 문자가 아닌 문자 그대로의 의미를 전달하고 싶으면 이것 또한 인코딩이 필요합니다.

(ex. / 은 URL 규칙상 URL의 계층을 구분할 때 사용되므로 문자 그대로의 /을 보내기 위해서는 인코딩이 필요합니다.)

 


아래 출처도 ASCII는 영문이기 때문에 ASCII 그대로 처리되었고,

"유니코드"라는 한글은 '한글 -> Unicode 매핑 -> UTF-8 Encoding -> URL Encoding'이 되었네요 :) 

온라인 Decoder를 사용하여 3byte씩 디코딩을 하면 유니코드라는 글자가 나옵니다. 

 

출처

728x90