- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TMIL
- 배포
- java
- CSS
- Refactoring
- 코어 자바스크립트
- MariaDB
- 에러핸들링
- Git
- LEVEL1
- LEVEL 1
- 코딩테스트
- 프로그래머스
- TWIL
- 면접을 위한 cs 전공지식 노트
- Docker
- mongodb
- Err-Handling
- 리팩터링 2판
- sql
- TIL
- First Project
- 오늘도 개발자가 안된다고 말했다
- javascript
- typescript
- 아고라스테이츠
- 알고리즘
- react
- CRUD
- LEVEL 2
성장에 목마른 코린이
문자열 (유니코드, ASCII 문자, UTF-8,16) 본문
문자열
2010년도 이후, 우리는 유니코드라고 불리는 인코딩 방식이 통일된 시대를 살아가고 있습니다.
문자열을 다루는 디테일한 방식에 대해 전부 알 필요는 없지만,
프로그래밍 언어마다 문자열을 다루는 자료형의 차이를 이해하기 위해,
문자열을 다루는 기본적인 방식은 알고 있어야 합니다.
문자열 하나는 몇 바이트인가요?
프로그래밍 언어마다 문자열을 저장하는 자료형이 다 다르므로,
"문자열 하나가 몇 바이트인가?"에 대한 답변은 이 자료형이 차지하고 있는 바이트를 이해할 때 답변할 수 있습니다.
유니코드란?
유니코드 협회가 제정하는 전 세계의 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준입니다.
유니코드가 탄생하기 이전에는, 같은 한글이 적힌 텍스트 파일이라도 표현하는 방법이 제각각이었습니다.
어떤 파일이 지원하지 않는 다른 인코딩 형식으로 저장되어 있는 경우에는 파일을 제대로 불러올 수 없었습니다.
기본적으로 유니코드의 목적은 현존하는 문자 인코딩 방법을 모두 유니코드로 교체하는 겁니다.
인코딩이란?
인코딩이란 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것입니다.
이 신호를 입력하는 인코딩과 문자를 해독하는 디코딩을 하기 위해서는
미리 정해진 기준을 바탕으로 입력과 해독이 처리되어야 합니다.
이렇게 인코딩과 디코딩의 기준을 문자열 세트 또는 문자셋(charset)이라고 합니다.
이 문자셋의 국제 표준이 유니코드입니다.
ASCII 문자란?
영문 알파벳을 사용하는 대표적인 문자 인코딩으로 7 비트로 모든 영어 알파벳을 표현할 수 있습니다.
52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자를 포함합니다.
유니코드는 ASCII를 확장한 형태입니다.
UTF-8과 UTF-16의 차이점은?
UTF-8과 UTF-16은 인코딩 방식의 차이를 의미합니다.
UTF-8은 Universal Coded Character Set + Transformation Format – 8-bit의 약자로,
UTF- 뒤에 등장하는 숫자는 비트(bit)입니다.
1. UTF-8 특징: 가변 길이 인코딩
UTF-8은 1 byte에서 4 bytes까지의 가변 길이를 가지는 인코딩 방식입니다.
네트워크를 통해 전송되는 텍스트는 주로 UTF-8로 인코딩됩니다.
사용된 문자에 따라 더 작은 크기의 문자열을 표현할 수 있기 때문입니다.
ASCII 문자는 1 바이트만으로 표현 가능한 것처럼 말입니다.
UTF-8은 ASCII 코드의 경우 1 byte, 크게 영어 외 글자는 2byte, 3byte, 보조 글자는 4byte를 차지합니다.
이모지는 보조 글자에 해당하기 때문에 4byte가 필요합니다.
2. UTF-8 특징: 바이트 순서가 고정됨
UTF-16에 비해 바이트 순서를 따지지 않고, 순서가 정해져 있습니다.
3. UTF-16 특징: 코드 그대로 바이트로 표현 가능, 바이트 순서가 다양함
UTF-16은 유니코드 코드 대부분(U+0000부터 U+FFFF; BMP) 을 16 bits로 표현합니다.
대부분에 속하지 않는 기타 문자는 32 bit(4 bytes)로 표현하므로
UTF-16도 가변 길이라고 할 수 있으나, 대부분은 2 바이트로 표현합니다.
U+ABCD라는 16진수를 있는 그대로 이진법으로 변환하면 1010-1011-1100-1101 입니다.
이 이진법으로 표현된 문자를 16 bits(2 bytes)로 그대로 사용하며,
바이트 순서에 따라 UTF-16의 종류도 달라집니다.
UTF-8에서는 한글은 3 바이트, UTF-16에서는 2 바이트를 차지합니다.
'CodeStates > Section 3 (백엔드)' 카테고리의 다른 글
운영체제, 응용 프로그램 (0) | 2022.04.22 |
---|---|
래스터와 벡터 이미지의 차이점 (0) | 2022.04.22 |
Session (인증 성공 상태) (0) | 2022.04.19 |
Token (토큰) (0) | 2022.04.19 |
CSRF (Cross Site Request Forgery) (0) | 2022.04.18 |