๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

study iOS๐ŸŽ/์ฃผ์ ‘ Swift - swift ํ…Œ๋งˆ

[Too Swfit] ์‹œ์ฆŒ1 4ํšŒ. ์Šค์œ„ํ”„ํŠธ์˜ ์บ๋ฆญํ„ฐ๋ฅผ ์•Œ๊ณ ์‹ถ์–ด. Want to know Swift's character

1. 'Character' type

  ๋ฌธ์ž representation ์ฒด๊ณ„ ์ค‘์—๋Š” ASCII๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์Šคํ‚ค๋Š” ๋ฌธ์ž๋ฅผ 7๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์ตœ๋Œ€ 128๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ super (char) set์œผ๋กœ ๋‚˜์˜จ UTF-8์€ ์ด ์•„์Šคํ‚ค ํ‘œํ˜„ ๊ด€๊ณ„๋ฅผ ๊ทธ๋Œ€๋กœ ์ƒ์†ํ•œ์ฑ„๋กœ, ๋ฌธ์ž ์ŠคํŽ™ํŠธ๋Ÿผ์„ ๋„“ํžŒ ์บ๋ฆญํ„ฐ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. 

 

2. Operation on Character < type checking >

// ์ด๊ฑฐ ๊ณต๋ฐฑ๋ฌธ์ž ๋งž๋‹ˆ?
let space: Character = " "
space.isWhitespace -> true or false

// ์ด ์บ๋ฆญํ„ฐ๋Š” ์•„์Šคํ‚ค ์ฒด๊ณ„์— ์žˆ๋Š” ๊ฑฐ๋‹ˆ?
let aChar = "a"
aChar.isASCII

// ์ด๊ฑฐ 16์ง„๋ฒ• ํ‘œํ˜„ํ•˜๋Š” ์ฒด๊ณ„ ์ค‘ ํ•˜๋‚˜๋‹ˆ( 0-9, a-f or A-F )
let aChar2 = "s"
aChar2.isHexDigit

 

>>> ๋ฌธ์ž๋ฅผ ๊ทธ ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” Int ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

let unicodeNine: Character = "9"
unicodeNine.wholeNumberValue

์บ๋ฆญํ„ฐํƒ€์žŽ๋ฐ์ดํ„ฐ.wholeNumberValue! -> ๋ฌธ์ž์ฒด๊ณ„์—์„œ ๊ทธ ๋ฌธ์ž๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๋ฅผ ์ •์ˆ˜ํ˜•์œผ๋กœ

 

3. ์ŠคํŠธ๋ง(์บ๋ฆญํ„ฐ์˜ ์ปฌ๋ ‰์…˜)์˜ ์ธ์ฝ”๋”ฉ ๋ชจ๋“œ์˜ ์˜๋ฏธ

  ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ : UTF-32๋ชจ๋“œ๋ฅผ ๊ณ ๋ฅธ๋‹ค๋Š” ๊ฒƒ์€, ์ŠคํŠธ๋ง์˜ ๋ฉค๋ฒ„๋“ค์ธ ์ฝ”๋“œํฌ์ธํŠธ๋“ค์„ ํ•˜๋‚˜๋‹น ๋„‰๋„‰์žก์•„ UINT32๋ฅผ ์„œ์„œ ๋Œ€์‘ํ‘œํ˜„ํ•  ๊ฒƒ์ด๋ฉฐ, ๊ทธ๋ ‡๋‹ค๋ฉด, ์ด ์ŠคํŠธ๋ง์€ ํ•˜๋‚˜๋‹น 32๋น„ํŠธ ์งœ๋ฆฌ์ธ ์ฝ”๋“œ ํฌ์ธํŠธ๋“ค์ด ๋ชจ์ธ [UINT32] ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ UINT-32๋Š” ์—„์ฒญ๋‚œ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ์„ธ๊ณ„ ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์˜ ๋ฌธ์ž๋ฅผ ๋Œ€์‘ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆ์ฝ”๋“œ๋„ 21๋น„ํŠธ๋„ ๋‹ค ์“ฐ์ง€ ๋ชปํ•˜๋Š” ์ƒํƒœ(์•ฝ 110๋งŒ๊ฐœ ํ•˜๊ณ , ๋” ๋ชป์ฑ„์šฐ๋Š” ์ƒํƒœ) ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

7๋น„ํŠธ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ 0๋ฒˆ - 127๋ฒˆ์— ๋งตํ•‘๋œ ๋ฌธ์ž๋“ค์€(code point)๋Š”, 1๊ฐœ์˜ ์ฝ”๋“œ ์œ ๋‹›(UINT8)์„ ์ด์šฉํ•ด์„œ ์ €์žฅํ•˜๊ณ  ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ 8๋น„ํŠธ์—์„œ 11๋น„ํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋˜ ๋‹ค๋ฅธ 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)๋ฅผ ์จ์„œ ์ €์žฅํ•˜๊ณ  ํ•ด์„ํ•˜๊ณ  ํ•ด์•ผ๊ฒ ์ฃ ? ์œ„์— ๊ทธ๋ฆผ์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋งค์šฐ ์œ ์—ฐํ•œ ์ฒด๊ณ„์ธ, utf-8์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ธ๊ณ„์˜ ๋ฌธ์ž๋ฅผ ๋งตํ•‘ํ•˜๋Š” ์ฒด๊ณ„์ธ ์œ ๋‹ˆ์ฝ”๋“œ๋Š”, ์ตœ๋Œ€ 21๋น„ํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฐ ๊ตญ์˜ ๋ฌธ์ž๋“ค(์•ฝ 110๋งŒ๊ฐœ)์„ code point๋กœ ๋งตํ•‘ ์‹œ์ผœ๋†“์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์˜ ์‚ฌ์ง„์„ ๋ด…์‹œ๋‹ค.

์บ๋ฆญํ„ฐ ์„ธํŠธ์˜ ๊ฐœ๋… : ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜์–ด์˜ ๋Œ€๋ฌธ์ž A๋Š” ์ˆซ์ž 65(๋ฒˆ์งธ)๋กœ ๋งตํ•‘๋˜์–ด ์žˆ๋„ค์š”. ์˜†์— ๋ณด๋‹ˆ, ์„œ์œ ๋Ÿฝ๊ถŒ ์•„๋ž๊ถŒ์˜ ๊ทธ๋ฆฌ์Šค ์•ŒํŒŒ๋ฒณ์„ ์“ฐ๋Š” ๋‚˜๋ผ๋“ค์˜ ๋ฌธ์ž๋„ ๋ณด์ด์ฃ . ๊ฑ”๋„ค๋“ค์€ 192(๋ฒˆ์งธ)๋ผ๋Š” ์ˆซ์ž๋กœ ์ผ๋Œ€์ผ ๋Œ€์‘ ์‹œ์ผœ๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

4. ์–ด๋–ค Character์˜ ์ฝ”๋“œ ์œ ๋‹› ์ง‘ํ•ฉ์„ ํ™•์ธํ•˜๊ธฐ :

>>> Character.utf8 -> code unit๋“ค์˜ ์ปฌ๋ ‰์…˜์„ ๋ฆฌํ„ด

let char = "\u{00BD}" // ½ <- ์ด ๊ธ€์ž ์ž…๋‹ˆ๋‹ค

// utf8์œผ๋กœ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ ์œ„์—์„œ ์„ค๋ช…ํ•œ, ๋ฌธ์ž๋ฅผ ์ด๋ฃจ๋Š” code unit๋“ค์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
for i in char.utf8 {
    print(i)
}

// < UTF-8 views - code Units - 8๋น„ํŠธ๋ฅผ ์“ฐ๋‹ˆ ๋‹น์—ฐํžˆ ์œ ๋‹›์€ 2๊ฐœ๊ฒ ์ฃ . ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” 2๋ฐ”์ดํŠธ๋ฅผ
//์“ฐ๋Š” 8๋น„ํŠธ๋ฅผ ์š”๊ตฌํ•˜๋Š” ์บ๋ฆญํ„ฐ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.>

// code units that makes up the string
//194
//189


// (110)00010 = 194
// (10)111101 = 189

 

5. ์ŠคํŠธ๋ง์˜ ์ฝ”๋“œ์œ ๋‹› ๋ชจ์Œ์„ ๊ด€์ฐฐํ•ด๋ด…์‹œ๋‹ค.

"+½โ‡จ๐Ÿ™ƒ" ์ด ์ŠคํŠธ๋ง์˜ utf-8์— ์˜ํ•œ, ์ฝ”๋“œ ์œ ๋‹›๋“ค์„ ๋ณด์‹œ๊ฒ ์Šต๋‹ˆ๋‹ค.

let characters = "+\u{00bd}\u{21e8}\u{1f643}"
for i in characters.utf8{ // code unit - one
    print("\(i) : \(String(i, radix: 2))")
    
    if (i == 43 || i == 189 || i == 168){
        print()
    }

}

.utf8 ์ปฌ๋ ‰์…˜์„ ๋ฐ›์•„ code units๋“ค์„ ์ดํ„ฐ๋ ˆ์ด์…˜ ํ•ด๋ณด๋‹ˆ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋””ํดํŠธ๋กœ ์„ค์ •๋œ ๋น„ํŠธ๊ฐ€ ์•„๋‹Œ xํ‘œ์‹œ๋“ค์„ 2์ง„๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ธ ์ˆ˜๊ฐ€ ์ฝ”๋“œํฌ์ธํŠธ ์ž…๋‹ˆ๋‹ค. ๋ฐ‘์˜ ์„ค๋ช…์„ ์ดํ•ดํ•  ๋•Œ ์ฐธ๊ณ ํ•˜์„ธ์š”.

 

+ : 1 ~ 7 ๋น„ํŠธ ์ˆซ์ž๋กœ ๋งตํ•‘๋œ ๋ฌธ์ž => 1 ๋ฐ”์ดํŠธ ์ด์šฉ

43 : 101011

 

½ : 8๋น„ํŠธ ~ 11๋น„ํŠธ ์ˆซ์ž๋กœ ๋งตํ•‘๋œ ๋ฌธ์ž => 2๋ฐ”์ดํŠธ ์ด์šฉ

194 : 11000010  

189 : 10111101

 

" ์‹ค์ œ ์ปดํ“จํ„ฐ์—๋Š” 2๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, 110|00010 / 10|111101 => 10111101 => utf-8์— ์˜ํ•ด 189๋ผ๋Š” ์ˆซ์ž์— ๋Œ€์‘๋œ ๋ฌธ์ž

ํ•˜์ง€๋งŒ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, 7๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 0 ~ 128์ด๋ผ๋Š” ์ˆซ์ž ๋ฒ”์œ„ ๊นŒ์ง€ ๋ฐ–์— ๋งตํ•‘๋˜์ง€ ๋ชปํ•˜์ฃ . 189์™€ ๋Œ€์‘ํ•˜๋Š” ½  ๋ผ๋Š” ๋†ˆ์€

8๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋Ÿฌ๋ ค๋ฉด, 2๋ฐ”์ดํŠธ, 2๊ฐœ์˜ ์ฝ”๋“œ ์œ ๋‹›์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. "

 

โ‡จ : 12๋น„ํŠธ ~ 16๋น„ํŠธ ์ˆซ์ž๋กœ ๋งตํ•‘๋œ ๋ฌธ์ž => 3๋ฐ”์ดํŠธ ์ด์šฉ

226 : 11100010

135 : 10000111

168 : 10101000

 

๐Ÿ™ƒ : 17๋น„ํŠธ ~ 21๋น„ํŠธ ์ˆซ์ž๋กœ ๋งตํ•‘๋œ ๋ฌธ์ž => 4๋ฐ”์ดํŠธ ์ด์šฉ

240 : 11110000

159 : 10011111

153 : 10011001

131 : 10000011

 

6. ์™œ UTF-16, 32๋ณด๋‹ค ๋‚˜์€๊ฐ€?

์ด ์ธ์ฝ”๋”ฉ ์ฒด๊ณ„๋Š”, ํ•œ ์ฝ”๋“œ ํฌ์ธํŠธ( ๋ฌธ์ž๊ฐ€ ๋งตํ•‘๋œ ์ˆ˜ )๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ, ์ตœ์†Œํ•œ 16๋น„ํŠธ(2๋ฐ”์ดํŠธ), 32๋น„ํŠธ(4๋ฐ”์ดํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด, ์ฝ”๋“œ ํฌ์ธํŠธ์— ๋”ฐ๋ผ, ์œ ์—ฐํ•˜๊ฒŒ 1 ~ 4๋ฐ”์ดํŠธ๋ฅผ ํƒ„๋ ฅ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” UTF-8๋ณด๋‹ค, ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฐ”์ดํŠธ(์šฉ๋Ÿ‰)์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋น„์šฉ์ ์œผ๋กœ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด์ฃ . ์˜ˆ) UTF-32๋ฉด, ์ € ์œ„ 4๊ฐœ์˜ ์ฝ”๋“œํฌ์ธํŠธ ๊ฐ๊ฐ์„ ๋ชจ๋‘ 32๋น„ํŠธ(4๋ฐ”์ดํŠธ)๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋‚ญ๋น„๊ฐ€ ๋งค์šฐ ๋งค์šฐ ์‹ฌํ•  ๊ฒƒ์ด๊ณ , ๋งŒ์•ฝ ๊ทธ๋ฆฌ์Šค๋ฌธ์ž ์œ„์ฃผ๋กœ ๋‚˜์˜จ ๊ธ€์„ ๊ทธ๋ ‡๊ฒŒ ์ธ์ฝ”๋”ฉํ•œ๋‹ค๋ฉด, ์šฉ๋Ÿ‰์„ 4๋ฐฐ๋ฅผ ๋” ์“ฐ๊ณ , ๊ฐ™์€ ์ŠคํŠธ๋ง์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋˜๊ฒ ์ฃ .

 

๋‹จ์ ์€ ?? Search : O(n) UTF-8 vs O(1) UTF-32

์ฝ”๋“œํฌ์ธํŠธ์˜ ๋ฒ”์œ„๋ณ„๋กœ ์ฝ”๋“œ ์œ ๋‹› ๊ฐฏ์ˆ˜(1๋ฐ”์ดํŠธ)๊ฐ€ ๋‹ฌ๋ผ์„œ, ์˜คํผ๋ ˆ์ด์…˜์„ ์ ์šฉํ•  ๋•Œ ๋งค์šฐ ํž˜๋“ค๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 3๋ฒˆ์งธ ๋ฌธ์ž๋กœ ์ ํ”„ํ•˜๋ผ ๋ผ๋Š” ๋ช…๋ น์ด ์žˆ๋‹ค๋ฉด, ๋ชจ๋“  ๋ฐ”์ดํŠธ๋“ค์„ ์ ๊ฒ€ํ•˜์—ฌ ๋Š์–ด๋‚˜๊ฐ€๋ฉด์„œ ์ฐพ์•„์•ผํ•œ๋‹ค. 32๋ฐ”์ดํŠธ๋ฉด ๋ฐ”๋กœ ๋ฐ”์ดํŠธ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์ผ์ •ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ŠคํŠธ๋ง ์˜คํผ๋ ˆ์ด์…˜์€ ๋‹น์—ฐํžˆ 32๋ฐ”์ดํŠธ๋ณด๋‹ค ๋Š๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

7. UTF-16 ์ธ์ฝ”๋”ฉ swift's pick !!

unicode codepoint์ƒ 16๋น„ํŠธ๋กœ ํ‘œํ˜„๊ฐ€๋Šฅํ•œ ์ˆซ์ž์— ๋Œ€์‘๋œ, 0 ~ 2^16 - 1 ๋ฌธ์ž๊นŒ์ง€๋Š” 16๋น„ํŠธ ๋‹จ์œ„์˜ code unit, 17 ~ 21๋น„ํŠธ๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆ˜์— ๋งตํ•‘๋œ ์ˆ˜์—๋Š” ๋‘ ๊ฐœ์˜ codeunit๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹. 

 

< Surrogate Pair ๋ฐฉ์‹ >

์ˆ  ๊ฒŒ์ž„๋„ ๋งˆ์‹œ๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ๋ฐ, ์ด๊ฒƒ๋„ ์ง์ ‘ ํ•œ ๋ณต์žกํ•œ ์ฝ”๋“œํฌ์ธํŠธ๋ฅผ ์œ ๋‹›์œผ๋กœ ์ „ํ™˜์‹œ์ผœ๋ณด๋ฉด์„œ ๋ฐฐ์›Œ๋ณด์ฃ .

\u{0x1F643} // => upside-down smiley emoji
// 17๋น„ํŠธ๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆซ์ž์— ๋Œ€์‘๋˜๋Š” ๋ฌธ์ž๊ตฐ์š”.
// -> ๐Ÿ™ƒ

Surrogate pair for 17<= <=21

2 utf-16 code units

 

Represent the following hexadecimal codePoint

\u{1f643} : upside down smile emoji ๐Ÿ™ƒ

 

// 1). 16์ด ๋„˜๋Š” ๋ถ€๋ถ„์˜ ์ˆ˜์ธ 1์„ ๋นผ์ค€๋‹ค.

// 17๋ฒˆ์งธ ๋น„ํŠธ๋ฅผ ๋นผ์ค€๋‹ค. -> 0์œผ๋กœ

// subtract 0x10000

//  - 1 0000 0000 0000 0000 (in hexa)

// ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ๋ฌธ์ž๋Š” => \u{F643} ์ด ๋ฉ๋‹ˆ๋‹ค.

 

// 2). ์ด ๋‚˜๋จธ์ง€ 20๋น„ํŠธ๋ฅผ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ”

// 0000 1111 01 / 10 0100 0011

// ์œ— ์„œ๋กœ๊ฒŒ์ดํŠธ / ์•„๋žซ ์„œ๋กœ๊ฒŒ์ดํŠธ

 

// ์œ— ์„œ๋กœ๊ฒŒ์ดํŠธ ์กฐ๊ฐ์— D800๋”ํ•˜๊ธฐ

// 0000 0000 0011 1101

// 1101 1000 0000 0000 +

// D      8       3      D          => HIGH SURROGATE

 

// ๋’ท ์„œ๋กœ๊ฒŒ์ดํŠธ ์กฐ๊ฐ์— DC00 ๋”ํ•˜๊ธฐ

// 0000 0010 0100 0011

// 1101 1100 0000 0000 +

// D      E       3       3         => LOW SURROGATE

 

// 3). ์ด๊ฒƒ์„ ์ด์–ด๋ถ™์ด๊ธฐ

// ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ฒƒ์€ ๋‘๊ฐœ์˜ 16๋น„ํŠธ์งœ๋ฆฌ ์ฝ”๋“œ ์œ ๋‹› ๋‘๊ฐœ๋ฅผ ์“ฐ๋Š”

// D      8       3      D  /  D      E       3       3 

// ๋‹ค์Œ์˜ ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

// ๋‘ ๊ฐœ์˜ ์œ ๋‹›์ด ํ•„์š”ํ•˜์ฃ ?

ํ•ด๋‹น ์ด๋ชจ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 16๋น„ํŠธ ์งœ๋ฆฌ ์ฝ”๋“œ ์œ ๋‹› ๋‘๊ฐœ๋กœ ํ‘œํ˜„๋˜๋„ค์š”. 16-utf์—์„œ๋Š” 17๋น„ํŠธ ์ด์ƒ์ด ํ•„์š”ํ•œ ์ˆ˜๋กœ ๋งตํ•‘๋œ ๋ฌธ์ž๋Š” 4๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

   1). ๋‹จ์ 

1. utf-8์— ๋น„ํ•ด, 7bit์ดํ•˜์˜ ์ˆซ์ž์— ๋Œ€์‘๋˜๋Š” ๋ฌธ์ž๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ, 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)๋ฅผ ๋” ์‚ฌ์šฉํ•ด์„œ ๊ทธ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ผํ‹ด ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฑฐ์˜ ๋ชจ๋“  ๊ธ€์ž์—์„œ 8๋น„ํŠธ(1๋ฐ”์ดํŠธ)๋ฅผ ๋” ์จ์„œ ๊ทธ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

   2). ์žฅ๋ค

1. UTF-8์— ๋น„ํ•ด Operation์ ์šฉ์‹œ ๋” ํšจ์œจ์  (ํ•œ ๋ฌธ์ž๊ฐ€ 1์œ ๋‹›, 2์œ ๋‹›, 3์œ ๋‹›, 4์œ ๋‹›์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์—.) 

   +

2. utf-32์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ์  ( ๋ชจ๋“  ๋ฌธ์ž์— 32๋น„ํŠธ, 4๋ฐ”์ดํŠธ๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ. )