2010년도 이후 유니코드라고 불리는 인코딩 방식이 국제적으로 통일되었다. 유니코드와 인코딩은 무엇일까?
인코딩(encoding)
어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 부호화시키는 것이다. 반대로 문자를 해독하는 것은 디코딩(decoding)이라고 한다. 우리가 알고있는 ASCII코드는 영문 알파벳을 사용하는 대표적인 문자 인코딩으로, 7비트로 모든 알파벳을 표현한다. 유니코드는 ASCII를 확장한 형태이다.
유니코드(Unicode)
인코딩과 디코딩을 하기 위해서는 미리 정해놓은 기준이 있어야 한다. 이 기준을 "문자열 세트" 또는 "문자셋(charset)"이라고 부른다. 유니코드는 유니코드 협회(Unicode Consortium)가 제정하는 문자셋의 국제 표준이다. 즉, 전 세계 문자를 컴퓨터에서 일관되게 다룰 수 있도록 설계된 산업 표준이다.
컴퓨터는 모든 데이터를 2진수로 표현하고 처리한다. 비트(bit)란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위로, 1비트에는 2진수 값(0 또는 1)을 단 하나만 저장할 수 있다. 바이트(byte)란 비트가 8개 모여서 구성되며, 한 문자를 표현할 수 있는 최소 단위이다.
이 둘은 인코딩 방식의 차이를 의미한다. Universal Coded Character Set Transformation Format -8bit/-16bit 의 약자다.
UTF-8
한 문자를 나타내기 위해 1바이트(8비트) ~ 4바이트까지 사용한다. 네트워크를 통해 전송되는 텍스트는 주로 UTF-8로 인코딩되며, 가장 큰 특징은 바이트 순서가 고정되어 있고, 가변길이를 가진다는 것이다. 예를들어 ASCII코드는 1바이트, 영어 외의 글자는 2~3바이트, 보조글자는 4바이트를 차지한다.
UTF-16
유니코드의 대부분을 16비트(2바이트)로 표현한다. UTF-8과 다른 점은 바이트 순서(엔디안)에 따라 UFT-16의 종류가 달라지며, 길이의 변동 없이 대부분의 문자를 2바이트로 표현한다는 것이다.(대부분에 속하지 않는 문자는 4바이트로 표현하기도 한다.)
💡 엔디안이란?
컴퓨터는 데이터를 메모리에 저장할 때 바이트(byte) 단위로 나눠서 저장한다.
하지만 컴퓨터가 저장하는 데이터는 대게 32비트(4바이트)나 64비트(8바이트)로 구성된다. 때문에 연속되는 바이트를 순서대로 저장해야만 하는데, 바이트 저장 순서(byte order)에 따라 두 가지 방식으로 나눌 수 있다.
- 빅 엔디안(big endian)
낮은 주소에 데이터의 높은 바이트(MSB, Most Significant Bit)부터 저장하는 방식이다. 메모리에 저장된 순서 그대로 읽을 수 있으며, 이해하기가 쉽다는 장점이 있다.
- 리틀 엔디안(little endian)
낮은 주소에 데이터의 낮은 바이트(LSB, Least Significant Bit)부터 저장하는 방식이다. 평소 우리가 숫자를 사용하는 선형방식과는 반대로 읽어야 하며, 대부분의 인텔 CPU 계열에서는 이 방식으로 데이터를 저장한다.
물리적으로 데이터를 조작하거나 산술 연산을 수행할 때에는 리틀 엔디안 방식이, 데이터의 각 바이트를 배열처럼 취급할 때에는 빅 엔디안 방식이 더 적합하다.
이미지는 크게 비트맵 이미지와 벡터 이미지로 나뉜다.
비트맵(레스터) | 벡터 | |
---|---|---|
기반 기술 | 픽셀 | 수학적으로 계산된 shape |
특징 | 사진과 같이 색상 조합이 다양한 이미지에 적합 | 로고, 일러스트 등 제폼에 적용되는 이미지에 적합 |
확대 | 적합하지 않음 | 품질 저하 없이 확대 가능하며, 해상도의 영향 받지 않음 |
크기에 따른 파일 용량 | 큰 크기의 이미지 = 큰 파일 용량 | 큰 크기의 그래픽도 작은 파일 사이즈 유지 가능 |
상호 변환 | 복잡한 이미지일수록 오래 걸림 | 쉽게 래스터 이미지로 변환 가능 |
파일 포맷 | jpg, png, gif, bmp, psd | svg, ai |