컴퓨터를 사용하면서 종종 UTF-8라는 단어를 들어봤을 것입니다. 하지만 검색을 해보면,복잡한 기술적인 용어가 많아서v오히려 무슨 말인지 이해하기 어렵다는 말을 자주 듣습니다.

자리에서는 UTF-8(유니코드) 대해 가장 기본적인 개념에 대해 소개하도록 하겠습니다. 따라서,기술적이고 복잡한 것들은 최대한 제외하기 위해 노력 하였습니다.

  

UTF-8 전세계 모든 문자를 동시에 표현할 있도록 만들어진 규약입니다. 컴퓨터에서 UTF-8이나 EUC-KR이런 것들이 보인다면,‘아하,한글 표현과 어떤 관련이 있는 것이로군‘ 이라고 생각하시면 됩니다. UTF-8 흔히 유니코드라고도 불립니다. (UTF-8 유니코드를 표현하기 위한 방식 중의 하나입니다.)

 

애초에 컴퓨터에서 문자를 표기할때 영어권 국가만 생각해서 만들었기 때문에, 전세계 나라들은 자기나라의 문자를 표현하기 위해 나름대로의 독자적인 꼼수를 사용해야 했습니다. 이러한 방법을 인코딩이라고 부릅니다. 우리나라는 한글을 표기하기 위해 EUC-KR라는 인코딩을 사용하였고, 일본은 Shift-JIS,중국은 GB2312,대만은 Big5,우크라이나는 KOI8-U..등등 결국 지구상에는 수십종류의 인코딩이 생기게 되었습니다. 하지만,이렇게 제각각의 길을 걷다 보니 문제가 되는 경우가 많았습니다. 흔히 ‘한글이 깨져 보인다‘거나 ‘이상한 글자가 보인다‘는 말은 과정에 문제가 생겼기 때문입니다. 외국에서 만든 프로그램이나 게임들은 한국어 환경에서 제대로 문자가 보이지 않는 경우가 많았고,

반대로 한글로 것들은 영문윈도우 등에서 제대로 표시되지 않습니다. 이것은 로마자 외의 문자를 가진 다른 나라도 마찬가지였습니다. 그래서 전세계의 수많은 기업들을 중심으로 이러한 문제와 혼란을 한큐에 해결하기 위한 노력이 진행되었습니다. 그리하여 탄생한 것이 유니코드(Unicode)입니다.

전세계 모든 글자들을 한곳에 몰아넣은 종합세트인 것이죠.

 

중에서 UTF-8이라는 방식이 가장 힘을 얻게 되었고,세계 표준으로 인정받고 있습니다. UTF-8 도입되면서 전세계 모든 문자를 동시에 표현할 있게 되었고,따라서 서로간에 충돌이 일어나는 일이 없을 뿐만 아니라 다국어입력 또한 수월하게 되었습니다. 또한,UTF-8 현존하고 있는 모든 문자를 포함할 뿐만 아니라,학술용도를 위해 인류 역사상 존재했던 문자들을 담을 있습니다. 한국어의 경우 현재 사용가능한 11172자의 한글 외에도 아래아,반치음 처럼,이제는 사라져 버린 옛날 문자인 한글고어도 표시할 있습니다. 윈도우의 경우 이미 윈도우98부터 유니코드를 채택하여 사용하고 있고, 앞으로도 점점 유니코드가 널리 사용될 것입니다.

 

하지만 여전히 문제가 되는 곳이 웹페이지 입니다. 흔히 한글파일명으로 그림이 보이지 않을때 URL 항상 UTF-8 보냄‘ 옵션을 해제하라는 설명을 자주 봅니다.물론 필요할 경우는 어쩔 없겠지만, 방법은 단지 임시방편일 뿐이라는 사실을 알고 있어야 합니다.

 

아직까지 네이버를 비롯한 대부분의 사이트들은 UTF-8 아닌 EUC-KR 사용하고 있기 때문에 생기는 문제인데, 전세계 나라들이 서로간의 언어 충돌로부터 자유로워지기 위해서는 궁극적으로 UTF-8 통일되어야 것입니다. 현재는 과도기에 있기 때문에 다소 불편함을 겪는 것입니다.

 

이상으로,UTF-8 기본적인 개념에 대하여 설명하였습니다.

좀더 자세한 기술적인 것에 대해 알고 싶으시다면 아래의 페이지를 방문해 보십시오.

http://www.unicode.org (유니코드 공식 홈페이지)

 

 

 

유니코드, 와 UTF-8, UTF-16의 관계

 

유니코드란,

 

문자와 코드를 대응시킨 .  역사적 흐름으로 보면 처음엔 2바이트로 모든 문자를 표시하려는 시도가 있었다. 그래서 UTF-16 (2 바이트 고정)으로 인식되기도 한다.   윈도우 메모장인 경우, 유니코드로 선택하여 저장하면 UTF-16 되어 버린다고 한다.

 

 

UTF-8, UTF-16

유니코드를 바이트 열로 부호화(encode) , 어떤 식으로 표현하느냐의 차이에 따라 달라진다.UTF-8 1바이트 ~ 3바이트 가변 길이(영문, 숫자는 1Byte 그외 문자는 3Byte로 표현)로 부호화하며, UTF-16 2 바이트 고정으로 부호화 한다.

하지만 유니코드에서 해당문자에 대한 코드가 명확히 기술되어 있으므로 UTF-8, UTF-16 따라 코드 값이 바뀌는 것은 아니다.

, 어떤 문자를 "FE FF" 유니코드에서 정했다고 한다면, UTF-8, UTF-16 에서는 바이트로 부호화할 1바이트 - 3바이트 표현하느냐(UTF-8), 2 바이트 고정으로 표시하느냐(UTF-16) 차이만 있을 뿐이다.

 

UTF-8, UTF-16 유니코드를 이해하기(인코딩)위한 하나의 방법이다.

 

 

 

 

'Java > The Java Language' 카테고리의 다른 글

생성자가 private으로 선언된 경우/의미  (0) 2014.03.25
Exception chain  (0) 2013.10.17
Java Dynamic Proxy --> Draft  (0) 2013.02.07
The Class Class and Reflection  (0) 2013.02.07
What is Enum in Java  (1) 2013.02.06
Posted by Steven J.S Min
,