1. 문자 자료는 디지털로 어떻게 표현될까?
시용자가 컴퓨터에 입력을 하면 컴퓨터에서 그 입력을 바로 받아들이고 출력해주지 않습니다. 컴퓨터는 2진수로 처리된 입력값을 받을 수 있습니다. 그래서 중간에 입력값을 2진수로 바꿔주는 처리과정이 필요합니다. 즉, '입력 - 처리 - 출력'의 과정을 거칩니다.
다시 생각해보면 각 문자들은 정해저 있는 2진수 값이 있다고 볼 수 있습니다. 이렇게 각 문자를 구분하기 위해 각각 약속된 이진수의 값을 정해놓은 코드를 문자 코드라고 합니다. 문자 정보에는 0~9, A~Z, a~z, 특수문자 등과 같은 문자와 공백이며, enter 키를 누르는 것도 문자로 취급됩니다.
이 문자 코드에는 종류가 여러가지가 있는데 이번 포스팅에서는 아스키코드와 유니코드에 대해서 알아보겠습니다.
2. 아스키코드(ASCII code)
아스키코드는 미국 표준 부호 체계입니다. 알파벳과 숫자, 특수 문자에 고유의 숫자를 부여한 것입니다.
7비트의 조합으로 이루어져 있어 총 128(2^7)개의 문자를 만들 수 있습니다. 아래는 아스키코드의 예시입니다.
아스키코드 | 문자 | 아스키코드 | 문자 |
1000001 | A | 1100001 | a |
1000010 | B | 1100010 | b |
1000011 | C | 1100011 | c |
아스키코드는 한글이나 중국어 등으로는 표현을 할 수 없습니다. 이런 어려움 때문에 만들어진 것이 유니코드입니다.
3. 유니코드(Unicode)
유니코드는 16비트(2바이트)를 사용하여 0x0000부터 0xFFFF까지 2^16에 모든 문자를 집어넣어, 세계 모든 언어의 문자와 그 밖의 기호에까지 코드값을 부여한 것입니다.
하지만 2^16개의 자리로도 부족해지자 0x0000부터 0xFFFF까지 문자를 배정해 놓은 세트를 총 17개로 늘리게 됩니다. 이 세트들을 유니코드에서는 '평면'이라고 부릅니다. 이 평면 중에서 현대에서 쓰이는 문자들을 모두 0번 평면에 몰아넣었는데 이 평면을 기본 다국어 평면(BMP, Basic Multilingual Plane)이라고 합니다.
유니코드에서는 모든 평면이 0x0000부터 0xFFFF의 값을 가지고 있기 때문에 겹치는 현상이 생길 수 있습니다. 예를 들어 0xB000은 0번 평면에서는 한글 "뀀"을 의미하지만 1번 평면에서는 다른 나라의 글자를 의미합니다. 이에 U+라는 기호에 평면 숫자를 붙이는 방식을 사용했습니다. 한글 "뀀"은 0번 평면이기 때문에 숫자를 붙이지 않고 U+B000로 표시합니다. 만약 1번 평면에 있는 글자를 표시하려면 U+1B000으로 표시하면 됩니다.
4. 인코딩은 뭐고 utf-8, utf-16은 뭐지?
유니코드에 문제점이 있습니다. 영어를 표기할 때는 1바이트, 한글을 표기할 때는 2바이트, 어느 나라는 3바이트로 표현을 했습니다. 이런 가변적인 표현에 문제가 있었습니다. 컴퓨터 입장에서는 어떨 때 몇 바이트를 표현해야 되는지 부담을 갖게 됩니다. 그렇기 때문에 다른 표시를 해주면서, 만약 이 표시가 있으면 1바이트로 표현해줘, 이런 표시가 있으면 2바이트로 표현해줘와 같이 약속을 하게 되고 약속대로 저장을 하게 되는데, 이를 인코딩이라고 합니다. 파일을 저장할 때 유니코드로만 저장을 하면 혼란을 줄 수 있기 때문에 유니코드 앞에 약속된 표기를 해주면서 저장을 하게 됐습니다. 그리고 인코딩의 종류는 하나가 아니고 utf-8이 있고 utf-16 등이 있습니다.
'HTML' 카테고리의 다른 글
HTML Entities (0) | 2020.07.20 |
---|---|
WCAG (Web Content Accessibility Guidelines) (0) | 2020.07.20 |
HTML5 Markup (0) | 2020.07.14 |
<title></title> 작성 시 주의점 (0) | 2020.07.13 |
HTML 접근성 (Accessibility)과 웹 표준 (0) | 2020.07.13 |