2006년 10월 04일
문자셋, 문자셋 인코딩이란?
문자셋과 문자셋 인코딩이란 말은 자주 섞어쓰게 됩니다.
문자셋 인코딩을 간단하게 문자셋이라고 부르기도 하고 인코딩이라고 부르기도 합니다.
이런게 혼용되서 사용하다보니 처음에 개념잡기가 너무 힘들었습니다.

그래서 문자셋과 문자셋 인코딩의 개념에 대해서 간단하게 설명하고자 합니다.

문자셋이란 문자들의 모임입니다.
영어라면 {abcd...ABCD...} 한글이라면 {가갸거겨...힣} 이런 식입니다.

색깔셋이 있다면 {빨주노초파남보...} 뭐 이렇겠죠.

그럼 문자셋 인코딩이란 무엇인가? 문자셋 인코딩은 문자모임을 출력시키기 위해 필요합니다.
그림파일도 여러가지 포맷이 존재합니다. jpg, png, gif 등등.
같은 빨강색이라도 기록되어 있는 바이트는 포맷방식 마다 서로 다릅니다.

그것처럼 문자도 마찬가지 입니다. 똑같은 글자라도 문자셋 인코딩에 따라 바이트가 다릅니다.
유니코드를 예로 이야기 하겠습니다.
유니코드에서 '자'는 16진수로 'C790'번(?) 입니다.

이 '자'를 UTF-8 인코딩으로 표현하면 3바이트로 나타낼 수 있습니다.
10진수로 나타내보면 '236, 158, 144' 입니다.

이 3개의 바이트를 UTF-8 인코딩에 대입하면 유니코드 문자셋의 'C790'번에 위치하는 '자'라는 글자와 매치가 되는 것입니다.

EUC-KR은 유니코드 문자셋에 대한 인코딩 방식이 아닙니다.
따로 한글 문자셋에 대한 인코딩 방식인데 이 한글 문자셋(이하 EUC-KR용 문자셋)에 대한 명칭을 잘 모르겠습니다.
'자'라는 글자를 EUC-KR로 표현하면 2바이트 '192, 218'로 나타낼 수 있습니다.

이 2개의 바이트를 EUC-KR 인코딩에 대입하면 EUC-KR용 문자셋의 '자'라는 글자와 매치가 되는 것입니다.

유니코드 문자셋에는 모든 나라의 언어를 지원하는데 비해 EUC-KR용 문자셋은 한글 이외의 언어를 제대로 지원하지 못합니다.

문자셋과 이 문자셋에 있는 글자를 표현하기 위한 인코딩이 잘못되었을 경우 글씨가 깨져서 나타나게 되는 것입니다.
'236, 158, 144'를 UTF-8로 읽어야 유니코드 문자셋과 매치하여 '자'라는 글자가 되지 EUC-KR로 읽으면 EUC-KR용 문자셋과 매치하여 '옄'으로 표시됩니다.

울트라에디트등의 편집기를 이용해서 UTF-8, EUC-KR 이 두가지 인코딩으로 저장한 텍스트 파일을 만들어 이진편집을 해보면 기록된 바이트를 직접 눈으로 확인하 실 수 있습니다.
by -A2- | 2006/10/04 15:59 | 개발/플밍 | 트랙백(2) | 덧글(9)
트랙백 주소 : http://ani2life.egloos.com/tb/2735328
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 루미넌스 - misce.. at 2006/11/17 16:07

제목 : 아름다운 Charset UTF-8
UTF-8. 이 얼마나 아름다운 코드인지.. 모든 바이너리 데이터(텍스트도 바이너리 데이터의 일종이다.)는 8bit-byte로 만들어진다. 이중에서 문자열을 표현하고 싶어했던 선각자(?!)집단에서 ASCII라는 코드체계를 만들고 문자열을 끝을 표현하기 위해 0x00 이라는 바이트를 사용하면서, 저주받은 코드페이지문제가 생겨나게 됐다. 아니.. 어쩌면.. 인류가 쓸데없이 욕심을 부리고 바벨탑을 쌓다가 신으로부터 벌을 받으면서부터 이 골치아픈 문제......more

Tracked from 내 맘대로 보는 세상 at 2007/06/09 17:29

제목 : 컴퓨터 속의 한글
컴퓨터 속에서 맨날 한글을 봐오고 있으면서도 막상 한글 코드에 대해서 관심 있어 하는 프로그래머는 그리 많지 않은 듯 싶다. 그리고 관심을 가진다고 해도 잘 정리된 문서가 없는 듯 싶어......more

Commented by 웅이 at 2006/10/04 16:07
음 개념 잡았씀 감솨 ㅋㅋ
Commented by daybreaker at 2006/10/04 17:10
흐흐, 처음에 설명해주는 사람이 없으면 이거 개념 잘 안 잡히죠.; 저도 오랜 시간이 흐른 뒤에나 습득했습니다. (워낙 혼용해서 많이 쓰다보니..)

그나저나 euc-kr은 한글도 제대로 다 표현하지 못한다고 보는 게 맞을 듯합니다. -_-; 대표적인 예로 '뷁'이나 '쿙' 같은 것들요. (yser님 블로그에 보시면 관련 포스팅이 있을 겁니다)
Commented by 정태영 at 2006/10/04 19:19
관련해서 예전에 써놓은 글이 있어서 링크 걸고 갑니다 :)
http://b.mytears.org/2005/01/101

p.s) character set 에서 set 에 '집합' 이라는 의미가 있으므로 '문자셋 모임' 이라기보다 'character set' 이라고 표현하거나 '문자셋', 혹은 '문자집합(모임)' 정도로 표현하는게 맞지 않을까 싶네요.
Commented by -A2- at 2006/10/05 00:59
정태영// 트랙백을 보내주시지 그러셨어요. 지적해주신 부분은 고치겠습니다. 님 말씀이 맞습니다. :)
Commented by 루미넌스 at 2006/11/17 16:11
제 포스팅 다시 트랙백 했습니다^^
말씀하신대로 혼용해서 쓰니까 좀 헷갈려들 하는 구석이 있죠..
U+41은 Unicode charset의 "A"이지만, UTF-8이나 ASCII로 Encoding한게 0x41 이 되는 것인데..
(외우고 있는 코드는 "A"밖에 없다는;;;)
중요한 지적 감사합니다^^
Commented by -A2- at 2006/11/17 22:24
루미넌스// 전 A도 맨날 까먹습니다.;;
Commented by mkohz at 2006/11/24 07:24
유니코드관련 검색을 하다가 들어왔는데요.
질문하나 드려도 될까해서요.
유니코드로 작성된 텍스트를 헥사에디터에서보면 '자'가 c7 90이면 90 c7 이렇게 보이는데요.
에디터에서 보여줄때 순서가 바뀌는 건가요? 아니면 원래 이렇게 파일에 들어 있는 건가요?
Commented by 정태영 at 2006/11/25 18:19
mkohz// 그게 바로 byte order 입니다. BOM 을 보게 되면 utf16_be (big endian) 과 utf16_le (little endian) 등으로 엔디안에 따라 BOM 이 다른 것을 확인할 수 있지요 ;)
Commented by -A2- at 2006/11/26 00:13
mkohz// 정태영님이 좋은 답변을 해주셨네요.
아래 링크를 참고해 보셔도 좋습니다.
http://e-words.ne.kr/w/BOM.html

:         :

:

비공개 덧글



<< 이전 페이지 | 다음 페이지 >>