본문 바로가기

Programming/XML

인코딩 및 유니코드1

 (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)가 나타난 배경이다.

 

이 글은 스프링노트에서 작성되었습니다.