what is UTF & ASCII
컴퓨터는 문자라는 것을 알고 있을까? 아니 알지 못한다. 그들에게는 010011 같이 하나의 비트로 이루어진 나열에 불과하다. 그렇다면 컴퓨터는 이 나열들을 어떻게 끊고 어떻게 해석해야 할까
그걸 정하는 방법이 바로 UTF 와 ASCII 이다.
ASCII
가장 대표적인 방식이다. 문자하나를 1바이트로 나타내는 방식이다. 근데 이러면 단점이 있다. 표준이 대는 영어와 몇몇의 특수문자 그리고 숫자를 제외한 나머지 문자들을 나타내지 못한다. 예를 들어 한국어도 전혀 나타내지 못한다.
따라서 전세계의 모든 문자를 컴퓨터상에서 해석할 수 있게 나온것이 바로 UTF이다.
UTF
이런 utf에도 종류가 있는데 utf-8 utf-16 utf-32 등이 있다.
뒤에 있는 숫자는 알겠지만, 기준이 되는 비트 수를 의미한다.
utf-8 은 기본이 8비트 즉, 1바이트이다. 따라서 기존의 ASCII에서 사용하던 체제와 완전한 호환성을 가진다.
정확히 말하자면 아스키처럼 첫번째 비트가 0이면 1바이트씩 끊는다. 1이면 다른 방식으로 끊게 된다.
따라서 한글은 한글자에 3바이트를 사용하게 된다.
utf-16은 기본이 16비트이다. 따라서 영어로 2바이트 한글로 2바이트이다. 그외는 4바이트까지 사용하고 있다.
utf-32는 기본이 32비트 즉, 4바이트이다. 따라서 어마어마한 양을 차지한다.
인코딩과 디코딩
뭔가 햇갈려서 정리해놓았다.
인코딩이 사람 → 컴퓨터 이고 디코딩이 컴퓨터 → 사람이다.
즉, 디코딩이 우리가 쓰는 문자로 치환하는 것이고 인코딩이 컴퓨터언어(바이트)로 바꾸는 것이다.
C
"한" → b'\xed\x95\x9c' (UTF-8) 인코딩
b'\xed\x95\x9c' → "한" 디코딩