유니코드는 전세계 문자를 하나의 Character Set 으로 표시하기 만들어졌다. Character Set 에는 한 국가에서 사용하는 언어체계에 집중되어 있었고 이는 당연한 것이다.
현재 유니코드는 0x000000 부터 0x10FFFF 까지 1,114,112 개 글자를 표시한다. 이 영역은 아직도 계속 버전이 변경되면서 추가 되고 있다. 이 유니코드를 표시하는 인코딩은
UTF8(UTF-8), UTF16(UTF16BE, UTF16LE 로 추가로 분리하기도 한다.), UTF32m, UCS2 등이 있다. 간혹 사람들이 UTF8 이라는 것을 그냥 유니코드라고 통용해 부르기도 한다. 다시 한 번 설명하면 유니코드는 Character Set 으로 0x000000 부터 0x10FFFF 까지의 값이고 유니코드 인코딩은 이러한 값들이 실제 저장될 때(메모리가 존재할 때나 파일로 저장될 때)의 값을 의미한다.
다시 유니코드로 돌아가서 유니코드 전체를 논리적으로 나눈 영역을 유니코드 평면이라고 한다.
(http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4 )
이 평면은 기본 다국어 평면, 보조 다국어 평면, 보조 상형 문자 평면, 3차 상형 문자 평면, 미지정 평면, 보조 특수 목적 평면, 사용자 영역 평면 으로 나눈다.
초창기 유니코드는 0 ~ 0xFFFF 로 모든 문자를 표시 하려고 했다. 현재는 이 영역을 기본 다국어 평면으로 부른다.알파벳, 한글, 대부분의 한자가 이 영역에 있다. 보조 상형 문자 평면에는 초창기 유니코드에 포함되지 않는 한자들이 있다. 사용자 영역은 소프트웨어나 폰트에서 특수한 용도로 사용할 수 있는 영역으로 다른 소프트웨어와 폰트에서 호환되지 않을 수 있다. 이 영역을 이용해서 옛한글을 구현하기도 하였다(http://ko.wikipedia.org/wiki/%EC%98%9B%ED%95%9C%EA%B8%80#.ED.95.9C.EC.96.91_.EC.82.AC.EC.9A.A9.EC.9E.90_.EC.A0.95.EC.9D.98_.EC.98.81.EC.97.AD_.EC.BD.94.EB.93.9C 한양 사용자 정의 영역 코드를 참조할 것 ).
유니코드 영역은 위키 페이지에 나와 있는 대로다.
처음 (16진 코드) | 끝 (16진 코드) | 개수 (16진수) | 개수 (10진수) | 영어 이름 | 한국어 이름 |
---|---|---|---|---|---|
0000 | 007F | 80 | 128 | Controls and Basic Latin | 제어 문자와 라틴 기본 |
0080 | 00FF | 80 | 128 | Controls and Latin-1 Supplement | 제어 문자와 라틴 보충 |
0100 | 017F | 80 | 128 | Latin Extended-A | 라틴 확장-A |
0180 | 024F | D0 | 208 | Latin Extended-B | 라틴 확장-B |
0250 | 02AF | 60 | 96 | IPA Extensions | 국제 음성 기호 확장 |
02B0 | 02FF | 50 | 80 | Spacing Modifier Letters | 조정 문자 |
0300 | 036F | 70 | 112 | Combining Diacritical Marks | 조합 분음 기호(악센트) |
0370 | 03FF | 90 | 144 | Greek and Coptic | 그리스 문자와 콥트 문자 |
0400 | 04FF | 100 | 256 | Cyrillic | 키릴 문자 |
0500 | 052F | 30 | 48 | Cyrillic Supplementary | 키릴 문자 보충 |
0530 | 058F | 60 | 96 | Armenian | 아르메니아 문자 |
0590 | 05FF | 70 | 112 | Hebrew | 히브리 문자 |
0600 | 06FF | 100 | 256 | Arabic | 아랍 문자 |
0700 | 074F | 50 | 80 | Syriac | 시리아 문자 |
0750 | 077F | 30 | 48 | Arabic Supplement | 아랍 문자 보충 |
0780 | 07BF | 40 | 64 | Thaana | 타나 문자 |
07C0 | 07FF | 40 | 64 | N'Ko | 응코 문자 |
0900 | 097F | 80 | 128 | Devanagari | 데바나가리 문자 |
0980 | 09FF | 80 | 128 | Bengali | 벵골 문자 |
0A00 | 0A7F | 80 | 128 | Gurmukhi | 굴무키 문자 |
0A80 | 0AFF | 80 | 128 | Gujarati | 구자라트 문자 |
0B00 | 0B7F | 80 | 128 | Oriya | 오리야 문자 |
0B80 | 0BFF | 80 | 128 | Tamil | 타밀 문자 |
0C00 | 0C7F | 80 | 128 | Telugu | 텔루구 문자 |
0C80 | 0CFF | 80 | 128 | Kannada | 칸나다 문자 |
0D00 | 0D7F | 80 | 128 | Malayalam | 말라얄람 문자 |
0D80 | 0DFF | 80 | 128 | Sinhala | 싱할라 문자 |
0E00 | 0E7F | 80 | 128 | Thai | 타이 문자 |
0E80 | 0EFF | 80 | 128 | Lao | 라오 문자 |
0F00 | 0FFF | 100 | 256 | Tibetan | 티베트 문자 |
1000 | 109F | A0 | 160 | Myanmar | 미얀마 문자 |
10A0 | 10FF | 60 | 96 | Georgian | 조지아 문자 |
1100 | 11FF | 100 | 256 | Hangul Jamo | 한글 자모 |
1200 | 137F | 180 | 384 | Ethiopic | 에티오피아 문자 |
1380 | 139F | 20 | 32 | Ethiopic Supplement | 에티오피아 문자 보충 |
13A0 | 13FF | 60 | 96 | Cherokee | 체로키 문자 |
1400 | 167F | 280 | 640 | Unified Canadian Aboriginal Syllabics | 캐나다 원주민 음절문자 |
1680 | 169F | 20 | 32 | Ogham | 오검 문자 |
16A0 | 16FF | 60 | 96 | Runic | 룬 문자 |
1700 | 171F | 20 | 32 | Tagalog | 타갈로그 문자 |
1720 | 173F | 20 | 32 | Hanunoo | 하누노오 문자 |
1740 | 175F | 20 | 32 | Buhid | 부히드 문자 |
1760 | 177F | 20 | 32 | Tagbanwa | 타그반와 문자 |
1780 | 17FF | 80 | 128 | Khmer | 크메르 문자 |
1800 | 18AF | B0 | 176 | Mongolian | 몽골 문자 |
1900 | 194F | 50 | 80 | Limbu | 림부 문자 |
1950 | 197F | 30 | 48 | Tai Le | 타이 러 문자 |
1980 | 19DF | 60 | 96 | New Tai Lue | 새 타이 루에 문자 |
19E0 | 19FF | 20 | 32 | Khmer Symbols | 크메르 기호 |
1A00 | 1A1F | 20 | 32 | Buginese | 부기 문자 |
1B00 | 1B7F | 80 | 128 | Balinese | 발리 문자 |
1D00 | 1D7F | 80 | 128 | Phonetic Extensions | 음성 부호 확장 |
1D80 | 1DBF | 40 | 64 | Phonetic Extensions Supplement | 음성 부호 확장 보충 |
1DC0 | 1DFF | 40 | 64 | Combining Diacritical Marks Supplement | 조합 분음 부호(악센트) 보충 |
1E00 | 1EFF | 100 | 256 | Latin Extended Additional | 라틴 추가 확장 |
1F00 | 1FFF | 100 | 256 | Greek Extended | 그리스 문자 확장 |
2000 | 206F | 70 | 112 | General Punctuation | 일반 구두점 |
2070 | 209F | 30 | 48 | Superscripts and Subscripts | 위 첨자와 아래 첨자 |
20A0 | 20CF | 30 | 48 | Currency Symbols | 통화 기호 |
20D0 | 20FF | 30 | 48 | Combining Diacritical Marks for Symbols | 조합 분음 부호(기호) |
2100 | 214F | 50 | 80 | Letterlike Symbols | 글자를 변형한 기호 |
2150 | 218F | 40 | 64 | Number Forms | 여러 가지 수 |
2190 | 21FF | 70 | 112 | Arrows | 화살표 |
2200 | 22FF | 100 | 256 | Mathematical Operators | 수학 연산자 |
2300 | 23FF | 100 | 256 | Miscellaneous Technical | 여러 가지 기술 기호 |
2400 | 243F | 40 | 64 | Control Pictures | 제어 문자 기호 |
2440 | 245F | 20 | 32 | Optical Character Recognition | 문자 인식(OCR) 기호 |
2460 | 24FF | A0 | 160 | Enclosed Alphanumerics | 괄호 문자 |
2500 | 257F | 80 | 128 | Box Drawing | 괘선 기호 |
2580 | 259F | 20 | 32 | Block Elements | 블록 기호 |
25A0 | 25FF | 60 | 96 | Geometric Shapes | 도형 기호 |
2600 | 26FF | 100 | 256 | Miscellaneous Symbols | 여러 가지 기호 |
2700 | 27BF | C0 | 192 | Dingbats | 딩뱃 기호 |
27C0 | 27EF | 30 | 48 | Miscellaneous Mathematical Symbols-A | 여러 가지 수학 기호-A |
27F0 | 27FF | 10 | 16 | Supplemental Arrows-A | 화살표 보충-A |
2800 | 28FF | 100 | 256 | Braille Patterns | 점자 |
2900 | 297F | 80 | 128 | Supplemental Arrows-B | 화살표 보충-B |
2980 | 29FF | 80 | 128 | Miscellaneous Mathematical Symbols-B | 여러 가지 수학 기호-B |
2A00 | 2AFF | 100 | 256 | Supplemental Mathematical Operators | 수학 연산자 보충 |
2B00 | 2BFF | 100 | 256 | Miscellaneous Symbols and Arrows | 여러 가지 기호와 화살표 |
2C00 | 2C5F | 60 | 96 | Glagolitic | 글라골 문자 |
2C60 | 2C7F | 20 | 32 | Latin Extended-C | 라틴 확장-C |
2C80 | 2CFF | 80 | 128 | Coptic | 콥트 문자 |
2D00 | 2D2F | 30 | 48 | Georgian Supplement | 조지아 문자 보충 |
2D30 | 2D7F | 50 | 80 | Tifinagh | 티피나그 문자 |
2D80 | 2DDF | 60 | 96 | Ethiopic Extended | 에티오피아 문자 보충 |
2E00 | 2E7F | 80 | 128 | Supplemental Punctuation | 구두점 보충 |
2E80 | 2EFF | 80 | 128 | CJK Radicals Supplement | 한중일 부수 보충 |
2F00 | 2FDF | E0 | 224 | KangXi Radicals | 강희자전 부수 |
2FF0 | 2FFF | 10 | 16 | Ideographic Description characters | 한자 생김꼴 지시 부호 |
3000 | 303F | 40 | 64 | CJK Symbols and Punctuation | 한중일 기호 및 구두점 |
3040 | 309F | 60 | 96 | Hiragana | 히라가나 |
30A0 | 30FF | 60 | 96 | Katakana | 가타카나 |
3100 | 312F | 30 | 48 | Bopomofo | 주음 부호 |
3130 | 318F | 60 | 96 | Hangul Compatibility Jamo | 호환용 한글 자모 |
3190 | 319F | 10 | 16 | Kanbun | 훈독 순서 지시 부호 |
31A0 | 31BF | 20 | 32 | Bopomofo Extended | 주음 부호 확장 |
31C0 | 31EF | 30 | 48 | CJK Strokes | 한중일 한자 획 |
31F0 | 31FF | 10 | 16 | Katakana Phonetic Extensions | 가타카나 음성 확장 |
3200 | 32FF | 100 | 256 | Enclosed CJK Letters and Months | 한중일 괄호 문자 |
3300 | 33FF | 100 | 256 | CJK Compatibility | 한중일 호환용 |
3400 | 4DBF | 19C0 | 6592 | CJK Unified Ideographs Extension A | 한중일 통합 한자 확장-A |
4DC0 | 4DFF | 40 | 64 | Yijing Hexagram Symbols | 역경 6줄 기호 |
4E00 | 9FBF | 51C0 | 20928 | CJK Unified Ideographs | 한중일 통합 한자 |
A000 | A48F | 490 | 1168 | Yi Syllables | 이 소리 마디 |
A490 | A4CF | 40 | 64 | Yi Radicals | 이 부수 |
A700 | A71F | 20 | 32 | Modifier Tone Letters | 어조 조정 문자 |
A720 | A7FF | E0 | 224 | Latin Extended-D | 라틴 확장-D |
A800 | A82F | 30 | 48 | Syloti Nagri | 실헤티 나가리 |
A840 | A87F | 40 | 64 | Phags-Pa | 파스파 문자 |
A960 | A97F | 20 | 32 | Hangul Jamo Extended-A | 한글 자모 확장-A |
AC00 | D7AF | 2BB0 | 11184 | Hangul Syllables | 한글 음절 |
D7B0 | D7FF | 50 | 80 | Hangul Jamo Extended-B | 한글 자모 확장-B |
D800 | DBFF | 400 | 1024 | High Surrogate Area | 상위 서러게이트 영역 |
DC00 | DFFF | 400 | 1024 | Low Surrogate Area | 하위 서러게이트 영역 |
E000 | F8FF | 1900 | 6400 | Private Use Area | 사용자 영역 |
F900 | FAFF | 200 | 512 | CJK Compatibility Ideographs | 한중일 호환용 한자 |
FB00 | FB4F | 50 | 80 | Alphabetic Presentation Forms | 알파벳 표현꼴 |
FB50 | FDFF | 2B0 | 688 | Arabic Presentation Forms-A | 아랍 문자 표현꼴-A |
FE00 | FE0F | 10 | 16 | Variation Selectors | 모양 구별 문자 |
FE10 | FE1F | 10 | 16 | Vertical Forms | 세로쓰기 모양 |
FE20 | FE2F | 10 | 16 | Combining Half Marks | 조합용 반쪽 기호 |
FE30 | FE4F | 20 | 32 | CJK Compatibility Forms | 한중일 호환용 꼴 |
FE50 | FE6F | 20 | 32 | Small Form Variants | 작은꼴 변형 |
FE70 | FEFF | 90 | 144 | Arabic Presentation Forms-B | 아랍 문자 표현꼴-B |
FF00 | FFEF | F0 | 240 | Halfwidth and Fullwidth Forms | 전각/반각 모양 |
FFF0 | FFFF | 10 | 16 | Specials | 특수 제어 문자 |
10000 | 1007F | 80 | 128 | Linear B Syllabary | 선상 B 음절 문자 |
10080 | 100FF | 80 | 128 | Linear B Ideograms | 선상 B 상형 문자 |
10100 | 1013F | 40 | 64 | Aegean Numbers | 에게 숫자 |
10140 | 1018F | 50 | 80 | Ancient Greek Numbers | 옛 그리스 숫자 |
10300 | 1032F | 30 | 48 | Old Italic | 옛 이탈리아 문자 |
10330 | 1034F | 20 | 32 | Gothic | 고트 문자 |
10380 | 1039F | 20 | 32 | Ugaritic | 우가리트 문자 |
103A0 | 103DF | 40 | 64 | Old Persian | 옛 페르시아 문자 |
10400 | 1044F | 50 | 80 | Deseret | 데저렛 문자 |
10450 | 1047F | 30 | 48 | Shavian | 샤우 문자 |
10480 | 104AF | 30 | 48 | Osmanya | 오스마냐 문자 |
10800 | 1083F | 40 | 64 | Cypriot Syllabary | 키프로스 음절 문자 |
10900 | 1091F | 20 | 32 | Phoenician | 페니키아 문자 |
10A00 | 10A5F | 60 | 96 | Kharoshthi | 카로슈티 |
12000 | 123FF | 400 | 1024 | Cuneiform | 쐐기 문자 |
12400 | 1247F | 80 | 128 | Cuneiform Numbers and Punctuation | 쐐기 문자 숫자·문장 부호 |
1D000 | 1D0FF | 100 | 256 | Byzantine Musical Symbols | 비잔틴 시대의 악보용 기호 |
1D100 | 1D1FF | 100 | 256 | Musical Symbols | 악보용 기호 |
1D200 | 1D24F | 50 | 80 | Ancient Greek Musical Notation | 고대 그리스 시대의 악보용 기호 |
1D300 | 1D35F | 60 | 96 | Tai Xuan Jing Symbols | 태현경 기호 |
1D400 | 1D7FF | 400 | 1024 | Mathematical Alphanumeric Symbols | 수학식에서 쓰이는 알파벳 |
1F000 | 1F02B | 2C | 44 | Mahjong Tiles | 마작패 |
1F030 | 1F093 | 64 | 100 | Domino Tiles | 도미노패 |
1F0A0 | 1F0DF | 3B | 59 | Playing Cards | 트럼프 |
1F100 | 1F1FF | A9 | 169 | Enclosed Alphanumeric Supplement | 영숫자 원 문자 보조 |
1F200 | 1F251 | 3A | 58 | Enclosed Ideographic Supplement | 한자 원 문자 보조 |
1F300 | 1F5FF | 211 | 529 | Miscellaneous Symbols And Pictographs | 그 외 기호와 에모지 |
1F600 | 1F64F | 4C | 76 | Emoticons | 에모지 |
1F680 | 1F6C5 | 46 | 70 | Transport And Map Symbols | 교통과 지도의 기호 |
1F700 | 1F773 | 74 | 116 | Alchemical Symbols | 연금술 기호 |
20000 | 2A6DF | A6E0 | 42720 | CJK Unified Ideographs Extension B | 한중일 통합 한자 확장-B |
2A700 | 2B73F | 1035 | 4149 | CJK Unified Ideographs Extension C | 한중일 통합 한자 확장-C |
2B740 | 2B81F | DE | 222 | CJK Unified Ideographs Extension D | 한중일 통합 한자 확장-D |
2F800 | 2FA1F | 220 | 544 | CJK Compatibility Ideographs Supplement | 한중일 호환용 한자 보충 |
E0000 | E007F | 80 | 128 | Tags | 태그 |
E0100 | E01EF | F0 | 240 | Variation Selectors Supplement | 모양 구별 문자 보충 |
F0000 | FFFFF | 10000 | 65536 | Supplementary Private Use Area-A | 사용자 영역 보충-A |
100000 | 10FFFF | 10000 | 65536 | Supplementary Private Use Area-B | 사용자 영역 보충-B |
여기서 우리에게 중용한 몇 부분을 찾아보면
제어 문자와 라틴 기본 : 우리가 흔히 알고 있는 아스키 영역이다.
한글 자모, 한글 자모 확장-A, 한글 자모 확장-B : 현대 한글뿐만 아니라 옛한글도 들어있다. 그리고 첫소리, 가운데 소리,끝소리 모두 들어 있다. 따라서 이 것들을 이용해서 하나의 글자를 표시할 수도 있다. 옛한글의 경우 이렇게 표시할 수 밖에 없다. 이러한 한글표시 체계를 첫가끝이라고 한다( http://www.w3c.or.kr/i18n/hangul-i18n/ko-code.html ). 이 글자 영역어 3영역에 나누어 진것은 옛 한글의 경우 연구가 될수록 계속 추가되기 때문이다. 어째든 옛한글의 경우 정렬이 쉽지 않다.
한글 호환용 자모 : 한글 자모를 단독으로 표시 되는 용도라고 추정한다(검색이 잘안된다. ) . 여기 있는 자음은 첫소리 끝소리를 구별하지 않고 나와있다. 아무래도 첫가끝 용도가 아닌 단독으로 사용되는 용도이지 않나 하고 추정된다.
위에 것에 대한 코드는 http://ko.wikipedia.org/wiki/%ED%95%9C%EA%B8%80_%EB%82%B1%EC%9E%90_%EB%AA%A9%EB%A1%9D 에 잘 나와있다.
한글음절 : 이 부분이 현대 한글이 들어 있는 부분이다. 현대 한글로 표시할 수 있는 모든 글자가 들어 있다. 일정한 공식에 의해 첫소리, 가운데 소리, 끝소리로 분리할 수 있다. 우리 생각에는 모든 글자가 들어 있다고 생각했는데 가운데 소리 + 끝소리 조합이 안들어 있어 사전같은 특수한 용도로 사용하기 부족하다고 비판 받기도 하고 있다.
한중일 통합 한자,한중일 통합 한자 확장 A, B, C, D (http://ko.wikipedia.org/wiki/%ED%95%9C%EC%A4%91%EC%9D%BC_%ED%86%B5%ED%95%A9_%ED%95%9C%EC%9E%90 )
: 유니코드 영역에서 가장 많은 공간을 차지하는 문자가 한자이다. 한자는 한중일에서 사용하다보니 이나를 CJK 라 합쳐 부른다. 요즘에는 한중일에 베트남을 포함하여 CJKV 라고 부르기도 한다. 사실 한중일 양국에서 사용하는 한자들의 모양이 조금씩 다르긴 하지만 모양이 유사하고 뜻이 같은 글자들을 통합시켰다.
한중일 호환용 한자 :
EUC-KR에서는 뜻이 동일하더라도 음이 다를 경우 두 한자 모두 존재하고 있었는데 한중일 통합 한자에는 한가지만 추가 되고 있다가 추후에 호환성을 위해 추가 되었다.
상위 서러게이트 영역, 하위서러게이트 영역 : 이건은 UTF16 을 사용하는 인코딩에서 유용하게 사용된다. 그 외의 경우 의미 없다.
다음은 유니코드 인코딩에 대해 정리 하겠다.
참조
http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C
http://en.wikipedia.org/wiki/Unicode