관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

데이터 2 - 0과 1로 문자를 표현하는 방법 1 : 문자 집합과 인코딩 및 다양한 인코딩 방식에 대하여 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

데이터 2 - 0과 1로 문자를 표현하는 방법 1 : 문자 집합과 인코딩 및 다양한 인코딩 방식에 대하여

huenuri 2024. 10. 14. 20:47

이번에는 숫자가 아닌 문자에 대해서 공부해볼 것이다. 아스키 초드, 유니코드 등은 컴퓨터가 이해할 수 있는 0과 1로 다양한 문자를 표현하는 방법이다.

 

이번 절에서는 0과 1로 문자를 표현하는 방법, 즉 컴퓨터가 문자를 이해하고 표현하는 다양한 방법에 대해서 알아보겠다.


 

 

 

 

문자 집합과 인코딩

 

컴퓨터는 문자 집합에 속해 있는 문자를 이해할 수 있고, 반대로 문자 집합에 속해 있지 않은 문자는 이해할 수 없다. 문자 집합에 속한 문자라고 해서 컴퓨터가 그대로 이해할 수 있는 건 아니다. 문자를 0과 1로 변환해야 비로소 컴퓨터가 이해할 수 있다. 이러한 변환 과정을 문자 인코딩이라고 한다.

0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정은 문자 디코딩이라고 한다.

 

 


 

 

 

 

 

아스키 코드

아스키 코드에 속한 문자(아스키 문자)들은 각각 7비트로 표현되는데, 7비트로 표현할 수 있는 정보의 가짓수는 2의 7승으로 총 128개의 문자를 표현할 수 있다.

 

 

 

 

예를 들어, 'A'는 십진수 65로 인코딩되고, 'a'는 십진수 97로 인코딩된다. 참고라 아스키 코드표를 보면 Backspace, Escape, Space와같은 제어 문자도 포함된다.

문자 인코딩에서 '글자에 부여된 고유한 값'을 코드 포인트라고 한다. 가령 아스키 문자 A의 초드 포인트는 65이다.

 

 

 

 

그래서 한국을 포함한 영어권 외의 나라들은 자신들의 언어를 0과 1로 표현할 수 있은 고유한 문자 집합과 인코딩 방식이 필요하다고 생각했다. 이런 이유로 등장한 한글 인코딩 방식이 바로 EUC-KR이다.


 

 

 

 

EUC-KR

한글 인코딩을 이해하려면 우선 한글의 특수성을 알아야 한다.

 

 

 

 

 

완성형 인코딩 방식은 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식이다. 예를들어 '가'는 1, '나'는 2.. 이런 식으로 인코딩하는 방식이다.

반면 조합형 인코딩 방식은 초성, 중성, 종성을 위한 비트열을 할당하여 그것들의 조합으로 하나의 글자 코드를 완성하는 인코딩 방식이다. 다시 말해 초성, 중성, 종성에 해당하는 코드를 합하여 하나의 글자 코드를 만든다. 

 

 

 

 

'가'의 경우 b0a1로, '거'는 b0c5로 인코딩된다. 이제 온라인에서 직접 인코딩 실습을 진행해보기로 하자.

 

인코딩 실습하는 사이트

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

 

 

 

사이트에 접속해서 EUC-KR로 변경하고 '가'라는 글자를 써보았다. 그리고 아래쪽에 내려보면 인코딩된 문자가 보인다.

 

 

 

 

하지만 한글 인코딩이 되지 않은 이름으로 인해 불이익을 겪는 사례가 실제로 있었다.

 

 

모든 한글을 표현할 수 없다는 사실은 때때로 크고 작은 문제를 유발한다. EUC-KR 인코딩을 사용하는 웹사이트의 한글이 깨진다거나 이와 같은 사례도 같은 경우이다.

 


 

 

 

학습을 마치고

이 내용은 저녁식사 전에 학습한 내용인데 분량이 좀 많아서 나누어서 올리보기로 했다. 한글 인코딩 방식의 여러 가지 방식에 대해서 배울 수 있었다. 직접 사이트에 들어가서 인코딩을 실습해보는 것도 나름 괜찮았다.