티스토리 뷰
1. 문자 표(character set)
2. 문자 표 인코딩
3. 추가 개념
문자 표 -
문자+숫자를 1:1 맵핑시킨 것
기존에 있던 아스키코드(ASCII)는 영어만 적용
일본, 한국, 중국 등 다른 언어를 적용할 수가 없습니다.
그래서 나온 통합 문자 표가 유니코드(UNICODE)
하지만 영어를 표현할 때는 1byte
한글을 표현할 때는 2byte
..
등등 가변적인 문제점이 있음
인코딩 -
바이트 기준마다 표시를 넣어 구별함
이인 코딩 방법에는 UTF-8, UTF-16,... 이 있습니다.
정리 -
어떤 국가에서는 A라는 문자 표를
어떤 국가에서는 B라는 문자 표를
서로 맵핑되는 문자가 달라서 글자가 깨져 보임
그래서 통일된 것이 UNICODE
영어를 표현할 때는 1byte, 한글 2byte, 다른 언어는 3byte
가변적이라 컴퓨터 입장에서는 굉장히 혼란스럽습니다.
그래서 해결방안이 지정 바이트마다 앞에 표시를 합니다.
표시마다 구별을 하여 컴퓨터가 몇 바이트라고 인식할지 정합니다.
그것을 인코딩이라 합니다.
한글을 위해 이전에 많이 사용한 방식에는 EUC-KR이 있습니다.
현재는 UTF-8방식이 사용됩니다.
(UTF-8에서 한글은 3BYTE 단위로 사용한다고 합니다.)
영어 1BYTE, 한글 2BYTE인 이유 -
알파벳 + 확장 문자를 사용하여도 256가지가 넘지 않습니다.
한 공간에 '0', '1' 두 가지를 표현할 수 있으니
1bit는 두 가지 정보를 표현할 수 있습니다.
고로 2의 8승은 256, 8bit(1byte)로 다 포함할 수 있어
영어를 표현할 때 1byte를 사용한다고 합니다.(ASCII = 1BYTE)
(7비트를 문자 표현에 나타내고 1비트는 에러 감식에 사용된다고 합니다.)
하지만 한글은 공식 인정된 글자만 해도 몇천 개가 된다고 합니다.
1byte는 256가지의 언어를 표현하니 작습니다.
고로 2byte를 사용한다고 합니다 약 65000개의 문자를 구별할 수 있습니다.
인코딩 방식에 따라 한글을 2byte로 처리할지 3byte로 처리할지
다르다고 합니다!
JAVA에서의 문자 -
문자열의 바이트 계산이 필요할 때
어떤 인코딩 방식으로 처리할지에 따라
글자당 2byte로 처리될지 3byte로 처리될지 다릅니다.
"가나다"가
3x3byte가 될 수도 있고
3x2byte가 될 수도 있습니다.
결론
UTF-8로 인코딩을 하자.
'CS' 카테고리의 다른 글
git (0) | 2021.11.27 |
---|---|
RESTful API 간단한 정의 (0) | 2021.11.18 |
자료구조, java) 힙(heap) 구현 (0) | 2021.10.06 |
JDK, JRE 차이점! (0) | 2021.10.02 |
maven이란? (0) | 2021.10.01 |
- Total
- Today
- Yesterday
- JDK
- jre11
- jdk11
- 백준 제로
- jvm
- mappedby
- 백준 제로 자바
- 자바
- 스택
- springboot
- 다대일
- 백준
- java8
- JDK8
- 자사서비스
- jre
- 관계설정
- ㅃ
- 문제
- boot
- 알고리즘
- boot 일대다
- Spring
- 스타트업
- 코딩테스트
- 프로그래머
- 개발자채용
- 백엔드
- JPA
- jre8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |