꾸준히
문자 인코딩 개념 본문
문자표가 등장하게 된 계기
컴퓨터가 처리한 계산을 사람이 알아 볼 수 있는 형태로 출력하기 위해서다.
컴퓨터는 0, 1로만 값을 계산하기 때문에 문자는 계산 할 수 없다.
문자를 표현하기 위해서는 1은 'A', 2는 'B', 3은'C' ... 이런식으로 숫자값에 문자를 정하여 사용하였다.
아스키코드의 탄생
어떤 컴퓨터에서는 1이 'A'이고 어떤 컴퓨터에서는 2가 'A'이고... 각 컴퓨터마다 값에 대응되는 문자가 다르다보니 혼란이 발생하여 이를 해결하기 위해 만든 표가 아스키코드표이다.
하지만 아스키코드표는 영어만 지원하기 때문에 한글, 일본어, 중국어 등 각 나라의 언어들은 사용할 수가 없는 문제가 발생했다!
유니코드의 탄생
하나의 코드표를 만들어서 모든 세계의 언어를 표현할 수 있는 문자표를 만들자!라고해서 만들어진 것이 유니코드이다.
그런데 또! 문제가 생겨버렸다..
유니코는 영어는 1byte로 한글은 2byte로 다른나라언어나 특수문자를 표현할 땐 3byte로 가변적으로 표현하다보니 컴퓨터 입장에서는 언제는 1byte단위로 처리해야되고 언제는 2byte 단위로 처리해야 되는지 모르는 것이다.
인코딩의 탄생
유니코드로만 파일을 저장하면 위와같은 혼란이 생기니 몇 byte단위로 처리해야하는지 알려주기 위해 첫바이트에 정보를 추가한 것이 인코딩이다.
이런 인코딩의 방법으로는 UTF-8, UTF-16 등 여러종류가 있다.
아래 그림은 UTF-8의 인코딩 표이다
한글이 깨지는 이유?
가장 많은 경우는 ECU-KR로 인코딩 된것을 UTF-8로 읽거나, UTF-8로 인코딩 된것을 ECU-KR로 읽었을 때 이러한 현상이 발생한다. (인코딩 방식에 따라 데이터를 해석하는 방법이 다르므로)
cf) 사실 ECU-KR과 UTF-8은 인코딩 방식도 다르지만 사용하는 문자표도 다르다(ksx1001, unicode)
결론
문자표와 인코딩방식을 맞추면 '뷁입장브ㅜ뤱ㄹ' 같이 글자가 깨지지 않는다.