(1) 인코딩
XML 문서는 단순한 텍스트 형식의 파일이기 때문에 여러 나라의 언어 형태로 작성될 수 있다.
엘리먼트의 값뿐만 아니라 엘리먼트의 태그 이름과 속성 이름도 영어 및 한글을 비롯한 여러 가지 언어로 작성 및 저장될 수 있다.
여러 가지 언어 형태로 작성 및 저장된 XML 문서를 처리하기 위해서는 XML 문서가 어떤 문자코드 체계로 작성되어 있는지를 XML 프로세서에게 알려주어야 한다. XML 선언부에 인코딩 방식을 언급하는 이유가 바로 여기에 있다.
인코딩을 이해하려면 먼저 문자 코드에 대한 이해가 필요하다. 문자 코드(Character Code)란 문자들의 집합과 이 문자들을 나타내기 위해 정한 숫자(문자 코드)들을 1대 1로 연결시켜 놓은 것을 말한다.
아스키 코드표
출처 : http://www.jasko.co.kr/lesson/ascii.html
10진수 |
16진수 |
8진수 |
2진수 |
ASCII |
10진수 |
16진수 |
8진수 |
2진수 |
ASCII |
0 |
0×00 |
000 |
0000000 |
NULL |
64 |
0×40 |
100 |
1000000 |
@ |
1 |
0×01 |
001 |
0000001 |
SOH |
65 |
0×41 |
101 |
1000001 |
A |
2 |
0×02 |
002 |
0000010 |
STX |
66 |
0×42 |
102 |
1000010 |
B |
3 |
0×03 |
003 |
0000011 |
ETX |
67 |
0×43 |
103 |
1000011 |
C |
4 |
0×04 |
004 |
0000100 |
EOT |
68 |
0×44 |
104 |
1000100 |
D |
5 |
0×05 |
005 |
0000101 |
ENQ |
69 |
0×45 |
105 |
1000101 |
E |
6 |
0×06 |
006 |
0000110 |
ACK |
70 |
0×46 |
106 |
1000110 |
F |
7 |
0×07 |
007 |
0000111 |
BEL |
71 |
0×47 |
107 |
1000111 |
G |
8 |
0×08 |
010 |
0001000 |
BS |
72 |
0×48 |
110 |
1001000 |
H |
9 |
0×09 |
011 |
0001001 |
HT |
73 |
0×49 |
111 |
1001001 |
I |
10 |
0×0A |
012 |
0001010 |
LF |
74 |
0×4A |
112 |
1001010 |
J |
11 |
0×0B |
013 |
0001011 |
VT |
75 |
0×4B |
113 |
1001011 |
K |
12 |
0×0C |
014 |
0001100 |
FF |
76 |
0×4C |
114 |
1001100 |
L |
13 |
0×0D |
015 |
0001101 |
CR |
77 |
0×4D |
115 |
1001101 |
M |
14 |
0×0E |
016 |
0001110 |
SO |
78 |
0×4E |
116 |
1001110 |
N |
15 |
0×0F |
017 |
0001111 |
SI |
79 |
0×4F |
117 |
1001111 |
O |
16 |
0×10 |
020 |
0010000 |
DLE |
80 |
0×50 |
120 |
1010000 |
P |
17 |
0×11 |
021 |
0010001 |
DC1 |
81 |
0×51 |
121 |
1010001 |
Q |
18 |
0×12 |
022 |
0010010 |
SC2 |
82 |
0×52 |
122 |
1010010 |
R |
19 |
0×13 |
023 |
0010011 |
SC3 |
83 |
0×53 |
123 |
1010011 |
S |
20 |
0×14 |
024 |
0010100 |
SC4 |
84 |
0×54 |
124 |
1010100 |
T |
21 |
0×15 |
025 |
0010101 |
NAK |
85 |
0×55 |
125 |
1010101 |
U |
22 |
0×16 |
026 |
0010110 |
SYN |
86 |
0×56 |
126 |
1010110 |
V |
23 |
0×17 |
027 |
0010111 |
ETB |
87 |
0×57 |
127 |
1010111 |
W |
24 |
0×18 |
030 |
0011000 |
CAN |
88 |
0×58 |
130 |
1011000 |
X |
25 |
0×19 |
031 |
0011001 |
EM |
89 |
0×59 |
131 |
1011001 |
Y |
26 |
0×1A |
032 |
0011010 |
SUB |
90 |
0×5A |
132 |
1011010 |
Z |
27 |
0×1B |
033 |
0011011 |
ESC |
91 |
0×5B |
133 |
1011011 |
[ |
28 |
0×1C |
034 |
0011100 |
FS |
92 |
0×5C |
134 |
1011100 |
\ |
29 |
0×1D |
035 |
0011101 |
GS |
93 |
0×5D |
135 |
1011101 |
] |
30 |
0×1E |
036 |
0011110 |
RS |
94 |
0×5E |
136 |
1011110 |
^ |
31 |
0×1F |
037 |
0011111 |
US |
95 |
0×5F |
137 |
1011111 |
_ |
32 |
0×20 |
040 |
0100000 |
SP |
96 |
0×60 |
140 |
1100000 |
. |
33 |
0×21 |
041 |
0100001 |
! |
97 |
0×61 |
141 |
1100001 |
a |
34 |
0×22 |
042 |
0100010 |
" |
98 |
0×62 |
142 |
1100010 |
b |
35 |
0×23 |
043 |
0100011 |
# |
99 |
0×63 |
143 |
1100011 |
c |
36 |
0×24 |
044 |
0100100 |
$ |
100 |
0×64 |
144 |
1100100 |
d |
37 |
0×25 |
045 |
0100101 |
% |
101 |
0×65 |
145 |
1100101 |
e |
38 |
0×26 |
046 |
0100110 |
& |
102 |
0×66 |
146 |
1100110 |
f |
39 |
0×27 |
047 |
0100111 |
' |
103 |
0×67 |
147 |
1100111 |
g |
40 |
0×28 |
050 |
0101000 |
( |
104 |
0×68 |
150 |
1101000 |
h |
41 |
0×29 |
051 |
0101001 |
) |
105 |
0×69 |
151 |
1101001 |
i |
42 |
0×2A |
052 |
0101010 |
* |
106 |
0×6A |
152 |
1101010 |
j |
43 |
0×2B |
053 |
0101011 |
+ |
107 |
0×6B |
153 |
1101011 |
k |
44 |
0×2C |
054 |
0101100 |
' |
108 |
0×6C |
154 |
1101100 |
l |
45 |
0×2D |
055 |
0101101 |
- |
109 |
0×6D |
155 |
1101101 |
m |
46 |
0×2E |
056 |
0101110 |
. |
110 |
0×6E |
156 |
1101110 |
n |
47 |
0×2F |
057 |
0101111 |
/ |
111 |
0×6F |
157 |
1101111 |
o |
48 |
0×30 |
060 |
0110000 |
0 |
112 |
0×70 |
160 |
1110000 |
p |
49 |
0×31 |
061 |
0110001 |
1 |
113 |
0×71 |
161 |
1110001 |
q |
50 |
0×32 |
062 |
0110010 |
2 |
114 |
0×72 |
162 |
1110010 |
r |
51 |
0×33 |
063 |
0110011 |
3 |
115 |
0×73 |
163 |
1110011 |
s |
52 |
0×34 |
064 |
0110100 |
4 |
116 |
0×74 |
164 |
1110100 |
t |
53 |
0×35 |
065 |
0110101 |
5 |
117 |
0×75 |
165 |
1110101 |
u |
54 |
0×36 |
066 |
0110110 |
6 |
118 |
0×76 |
166 |
1110110 |
v |
55 |
0×37 |
067 |
0110111 |
7 |
119 |
0×77 |
167 |
1110111 |
w |
56 |
0×38 |
070 |
0111000 |
8 |
120 |
0×78 |
170 |
1111000 |
x |
57 |
0×39 |
071 |
0111001 |
9 |
121 |
0×79 |
171 |
1111001 |
y |
58 |
0×3A |
072 |
0111010 |
: |
122 |
0×7A |
172 |
1111010 |
z |
59 |
0×3B |
073 |
0111011 |
; |
123 |
0×7B |
173 |
1111011 |
{ |
60 |
0×3C |
074 |
0111100 |
< |
124 |
0×7C |
174 |
1111100 |
| |
61 |
0×3D |
075 |
0111101 |
= |
125 |
0×7D |
175 |
1111101 |
} |
62 |
0×3E |
076 |
0111110 |
> |
126 |
0×7E |
176 |
1111110 |
~ |
63 |
0×3F |
077 |
0111111 |
? |
127 |
0×7F |
177 |
1111111 |
DEL |
이러한 문자 코드를 컴퓨터가 이해할 수 있는 0과 1의 바이너리 값을 가지는 연속적인 비트 형태로 매ㅣㅇ시켜 주는 작업이 바로 문자 인코딩이라고 한다.
즉, 컴퓨터가 이해할 수 있는 코드 형태로 만들어 주는 것을 말한다.
예를 들어 ASCII 인코딩 체계는 7개의 비트를 사용한다. 알파벳 문자 'A'는 문자 코드 값으로 16진수인 41을 가지고 있다. 이것을 7개의 비트로 표현하면 '1000001'이 된다.
이번에는 ISO-8859-1 인코딩 체계에 대해 알아보자. ASCII 문자 코드는 총 128개의 문자까지만 표현하고 있으므로 7개의 비트만 가지고도 충분히 나타낼 수 있었다. 그러나 서부 유럽권 국가에서 사용하는 문자들을 기존 ASCII 문자 집합에 포함시켜 새로운 문자 집합이 만들어졌는데 이것이 '서유럽 문자 집합' 또는 'ISO Latin-1' 이라고 불리는 'ISO-8859-1'이라는 문자 집합이다.
0xA0 | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | | ® | ¯ | 175 | |||
0xB0 | ° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | ¿ | 191 | ||
0xC0 | À | Á | Â | Ã | Ä | Å | Æ | Ç | È | É | Ê | Ë | Ì | Í | Î | Ï | 207 | ||
0xD0 | Ð | Ñ | Ò | Ó | Ô | Õ | Ö | × | Ø | Ù | Ú | Û | Ü | Ý | Þ | ß | 223 | ||
0xE0 | à | á | â | ã | ä | å | æ | ç | è | é | ê | ë | ì | í | î | ï | 239 | ||
0xF0 | ð | ñ | ò | ó | ô | õ | ö | ÷ | ø | ù | ú | û | ü | ý | þ | ÿ | 255 |
서유럽 문자 (ISO-8859-1) 코드를 보면, 00~7F까지는 ASCII 문자 코드 체계를 그대로 따르고 서유럽에서 사용하는 문자들을 A0~FF까지 배정한 것이다.
서유럽 문자 (ISO-8859-1) 코드는 ASCII 문자 코드가 채택한 7비트 코드체계로 다 수용할 수가 없기 때문에 8비트(1바이트)코드 체계를 사용한다.
8비트는 총 256개의 다른 값을 저장할 수 있으므로 ASCII의 한계는 256자까지이다.
이것은 영어에서 필요로 하는 문자 모두를 쉽게 다루기에 충분한 숫자이다. 하지만 세계의 언어들 중에는 256개의 문자를 넘는 언어도 있기 때문에, 이러한 세계 모든 언어에 대한 문자 집합을 코드화시키는 것이 필요하게 되었고 이것이 바로 유니코드(Unicode)가 나타난 배경이다.
이 글은 스프링노트에서 작성되었습니다.