문자열
유니코드란?
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이다.
ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자를 다루기 위한 알고리즘 등을 포함하고 있다.
유니코드의 목적은 현존하는 문자 인코딩 방법을 모두 유니코드로 교체하는 것이다.
인코딩(부호화)란?
어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것이다.
이 신호를 입력하는 인코딩과 문자를 해독하는 디코딩을 하기 위해서는 이미 정해진 기준을 바탕으로 입력, 해독이 처리되어야한다.
이러한 기준을 '문자열 세트' 또는 '문자셋'이라고 한다.
이 문자셋(charset)의 국제 표준이 유니코드다.
ABCII 문자란?
영문 알파벳을 사용하는 대표적인 문자 인코딩으로 7비트로 모든 영어 알파벳으로 표현할 수 있다.
52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수문자, 그리고 하나의 공백 문자를 포함한다.
유니코드는 ASCII를 확장한 형태이다.
UTF-8과 UTF-16의 차이점
인코딩 방식의 차이가 있다.
UTF-8
Universal Coded Character Set + Transformation Format (8-bit의 약자)
숫자는 비트(bit)
가변 길이 인코딩이다.
유니코드 한 문자를 나타내기 위해 1byte(=8 bits)에서 4 bytes까지 사용한다.
'코' 라는 문자의 유니코드는 U+CF54 16진수로 표현된다.
이진법으로 표현하면 100-1111-0101-0100이 된다.
1110xxxx 10xxxxxx 10xxxxxx # x 안에 순서대로 값을 채워넣습니다.
11101100 10111101 10010100
let encoder = new TextEncoder(); // 기본 인코딩은 'utf-8'
encoder.encode('코') // Uint8Array(3) [236, 189, 148]
(236).toString(2) // "11101100"
(189).toString(2) // "10111101"
(148).toString(2) // "10010100"
ASCII 코드는 7비트, UTF-8에서는 1byte로 만들 수 있다.
0xxxxxxx
01100010
//UTF-8로 표현된 'b'
encoder.encode('b') // Uint8Array [98]
(98).toString(2) // "1100010"
바이트 순서가 고정된다.
UTF-16
코드 그대로 바이트로 표현 가능, 바이트 순서가 다양하다.
유니코드 코드 대부분을 16bits로 표현한다.
기타문자는 32bites, UTF-16도 가변 길이라고 할 수 있지만 대부분 2바이트로 표현한다.
UTF-8에서는 한글은 3바이트, UTF-16에서는 2바이트를 차지한다.
그래픽
비트맵(래스터)과 백터 이미지의 차이점
비트맵(레스터) | 백터 | |
기반 기술 | 픽셀 기반 | 수학적으로 계산된 Shape 기반 |
특징 | 사진과 같이 색상의 조합이 다양한 이미지에 적합. | 로고, 일러스트와 같이 제품에 적용되는 이미지에 적합. |
확대 | 확대에 적합하지 않음. 큰 사이즈의 이미지가 필요할 때, 사용하려는 크기 이상으로 생성하거나 스캔하야 함. |
품질 저하없이 모든 크기로 확대 가능. 해상도의 영향을 받지 않음. |
크기에 따른 파일 용량 | 큰 크기의 이미지는 큰 파일 사이즈를 가짐. | 큰 크기의 백터 그래픽은 작은 파일 사이즈를 유지할 수 있음. |
상호 병환 | 이미지의 복잡도에 따라 백터로 변환하는 것에 오랜 시간이 걸림. | 쉽게 래스터 이미지로 변환 가능. |
대표적인 파일 포맷 | jpg, gif, png, bmp, psd | svg, ai |
웹에서의 사용성 | jpg, gif, png 등이 널리 쓰임. | svg 포맷은 현대의 브라우저에서 대부분 지원 |
'tech' 카테고리의 다른 글
웹 서비스 캐시 (0) | 2021.08.10 |
---|---|
운영체제 (0) | 2021.08.10 |
DB - Sequlize (0) | 2021.07.31 |
DB - ORM(Object-Relational-Mapping) (0) | 2021.07.30 |
MySQL (0) | 2021.07.24 |