|
2005년 03월 22일
UTF-8에 대해 자세히 다룬 문서는 다른 곳을 참고하시고 ㅡㅡ;
이곳에서는 거두절미하고 나누는 원리만 이야기 하겠다. 나는 워낙 이해력이 부족해서 이 간단한 원리를 이해하는데 하루를 소모했다. OTL UTF-8은 EUC-KR처럼 영숫자 1바이트, 한글 2바이트가 아니다. 아무생각없이 바이트크기를 확인하다가 놀랐다. ㅡㅡ; 0~127까지는 기존 아스키코드와 호완을 위해서 똑같다. 그렇기 때문에 0~127 사이의 문자는 UTF-8 <-> EUC-KR 변환해도 차이가 없다. 아스키코드 127을 넘는 문자들만 잘 처리하면 된다. UTF-8에서는 한문자를 구성하는데 1~6바이트로 구성되는데 1바이트는 위에서 말했듯이 0~127에 속하는 문자이다. 예를들어 '자'라는 문자는 (236,158,144) 으로 이루어진다. 16진수로 하면 (0xEC,0x9E,0x90) 2진수로 하면 (11101100,10011110,10010000) 이렇다. 여기서 '자'를 읽어오는 방법은 '자'라는 문자를 구성하는 3바이트의 코드중 첫번째 바이트의 코드에 의해서 몇바이트를 읽어올지를 알아낼 수 있는 것이다. (236,158,144) 여기서 236을 읽어들여 UTF-8문서를 참고하면 3바이트로 이루어진 문자라는 것을 알 수 있다. 표는 아래와 같다. U-00000000 - U-0000007F: 0xxxxxxx U-00000080 - U-000007FF: 110xxxxx 10xxxxxx U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 맨위부터 범위에 해당하면 1바이트, 2바이트... 6바이트로 읽어오면 된다. 셋째줄 3바이트를 보면 1110xxxx게 되어 있는데 첫번째 바이트가 11100000 ~ 11101111 범위안에 드는 코드로 시작된다는 뜻이다. 즉, 첫번째 문자코드가 이 범위에 속하면 3바이트를 읽어오면 된다. 11100000 ~ 11101111 는 10진수로 224 ~ 239가 되고 아까 '자'의 첫번째 바이트가 236이므로 첫번째 바이트부터 시작해서 3바이트를 읽어오면 '자'가 완성되는 것이다. '97 98 236 158 144 99' => 이렇게 이루어진 문자는 (97) (98) (236 158 144) (99) 이런식으로 분리가 가능하며 출력하면 'a b 자 c' 로 표시가 된다. 유니코드 만든 사람들 참 머리가 좋은거 같다. 이런 멋진 방법을 생각해내다니. 추가로 254, 255 문자는 UTF-8에서 사용하지 않는다. UTF-8에 대한 한글로된 자세한 문서는 여기를 클릭! 나름대로 쉽게 설명한다고 글을 썼지만 의미전달이 제대로 되었을지 모르겠다. ㅡㅡ; 누구든 도움이 되면 좋겠지만 나의 글로인해 오히려 더 미궁에 빠지지 않을까 걱정스럽다. |
ABOUT
이글루 파인더
카테고리
그냥 잡담
최근 등록된 덧글
박군님 안녕하세요. ㅋ
저도 시도 자체..
by -A2- at 12/03 이런 사발라면 같은 행동을 할려고 시.. by 박군 at 12/03 이제는 14조가 중요한게 아니라 불안해서.. by -A2- at 12/03 티스토리도 좋죠. 백업되구 ㅋ 저는 워.. by -A2- at 12/03 한나라당은 병역기피자 모임이나 마찬.. by -A2- at 12/03 일석이묘 입니다. ㅋㅋ by -A2- at 12/03 일단 14조 약관이 사라졌다더군요.. SK.. by SeLeaf at 12/03 성급한 일반화의 오류일지는 모르겠으나.. by 쟌나비 at 12/02 서비스형 블로그 장단점 비교 해 놓은 .. by Dr.지존 at 12/02 감동의 물결..ㅎ by Dr.지존 at 12/02 깔끔한 요약 정리에 이벤트 참여 돌하나.. by Dr.지존 at 12/02 물 오르자마자 이글루스를 떠나게 되었.. by -A2- at 12/02 흑흑... ㅠㅠ by -A2- at 12/02 제가 낚은건가요? ㅎ 그리고 '에이투'가 .. by -A2- at 12/02 물 오르신 A2님 ^^ by rince at 12/01 늘 약관에 있어서는 약자가 될 수 밖에 없.. by rince at 12/01 님!! 제 블로그에다가 왕따블로거라고 .. by 금드리댁 at 12/01 이사가면 연락드릴께요. 훗! by -A2- at 12/01 노는 서버에 몰래설치 좋아요. ㅋㅋ by -A2- at 12/01 갑자기 제가 무슨 사과를 받아야 하는지.. by -A2- at 12/01 최근 등록된 트랙백
MBTI 테스트
by 최익필의 이름없는 블로그 석환의 생각 by plute's me2DAY 요즘 개그프로를 안보는 이유.... by 청투룡의 맑은하늘빈종이 쟈니김의 생각 by johnny's me2DAY 개발자 Lee 이야기 by 狂者力 硏究所 狂獸의 β(排他)的 人生 리만 브라더스 싱글 앨범 전격 발매!!!!!!!!! by 냉면개시 - 여름날의 베짱이. 11/21 - 개발자 LeeMB 이야기 by allo? link의 생각 by link's me2DAY 타마고♡의 생각 by outfly's me2DAY 뽈따의 생각 by cheek's me2DAY 실존하지 않는 인물의 이야기 by Aigo World 아크몬드의 생각 by archmond's me2DAY 기획자 LeeMB 이야기 by 에르미스? 카타르시스!! 교수 LeeMB 이야기 by 소담한 세상 RedBaron의 알림 by redbaron's me2DAY 제리아의 생각 by jeria's me2DAY 개발자 LeeMB 이야기 by 블로고스피어는 지금 periphery의 생각 by periphery's me2DAY sunset의 생각 by sunset's me2DAY 스크린샷 by ubuntu/Draco 이전 블로그
라이프 로그
|