티스토리 뷰

CS

인코딩 간단 정리(ASCII, UTF-8)

필자A 2021. 11. 18. 11:57

 

 

 

 

1. 문자 표(character set)

2. 문자 표 인코딩

3. 추가 개념

 

 

문자 표 -

 

문자+숫자를 1:1 맵핑시킨 것

 

기존에 있던 아스키코드(ASCII)영어만 적용

일본, 한국, 중국 등 다른 언어를 적용할 수가 없습니다.

그래서 나온 통합 문자 표가 유니코드(UNICODE)

 

하지만 영어를 표현할 때는 1byte

한글을 표현할 때는 2byte

..

등등 가변적인 문제점이 있음

ASCII문자 표


인코딩 -

 

바이트 기준마다 표시를 넣어 구별함

이인 코딩 방법에는 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
링크
«   2025/01   »
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
글 보관함