์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ์ƒ์„ธ3. ์ธ์ฝ”๋”ฉ4. ๋ฌธ์„œ์—์˜ UTF-85. URL์—์„œ UTF-86. ๊ด€๋ จ ๋ฌธ์„œ

1. ๊ฐœ์š”[ํŽธ์ง‘]

UTF-8์€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€๋ณ€ ๊ธธ์ด ์œ ๋‹ˆ์ฝ”๋“œ ์ธ์ฝ”๋”ฉ์ด๋‹ค. ์ผ„ ํ†ฐ์Šจ๊ณผ ๋กญ ํŒŒ์ดํฌ(Go ์–ธ์–ด๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ)๊ฐ€ ๋งŒ๋“ค์—ˆ๋‹ค. UTF-8์ด๋ž€ ๋ง์€ Unicode Transformation Format - 8bit์—์„œ ์œ ๋ž˜ํ–ˆ๋‹ค๊ณ .

2. ์ƒ์„ธ[ํŽธ์ง‘]

์ฝ”๋“œ ํŽ˜์ด์ง€๋Š” 65001๋กœ, UTF-8๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ๊ธธ์ด๋Š” ์ตœ๋Œ€ 6๋ฐ”์ดํŠธ์ง€๋งŒ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ๊ณผ์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด 4๋ฐ”์ดํŠธ๊นŒ์ง€๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ ๊ธ€์ž๊ฐ€ 1~4๋ฐ”์ดํŠธ ์ค‘ ํ•˜๋‚˜๋กœ ์ธ์ฝ”๋”ฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, 1๋ฐ”์ดํŠธ ์˜์—ญ์€ ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๊ฐ€์ง„๋‹ค. ์•„์Šคํ‚ค ์ฝ”๋“œ์˜ 0~127๊นŒ์ง€๋Š” UTF-8๋กœ ์™„์ „ํžˆ ๋™์ผํ•˜๊ฒŒ ๊ธฐ๋ก๋œ๋‹ค. ์–ด์ฐจํ”ผ ์œ ๋‹ˆ์ฝ”๋“œ๋Š” U+10FFFF๊นŒ์ง€๋งŒ(10์ง„๋ฒ•์œผ๋กœ๋Š” 1,114,111) ์ด์šฉํ•˜๋Š”๋ฐ, UTF-8์€ ์•„๋ž˜์— ๋‚˜์™€ ์žˆ๋“ฏ์ด ๊ฐ€๋ณ€ ๋ฐ”์ดํŠธ ๊ธธ์ด๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฝค ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์žก์•„๋จน๊ณ ๋„ 2,097,151๊นŒ์ง€ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 4๋ฐ”์ดํŠธ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๊ณ ๋„ ๋‚จ๋Š”๋‹ค.

์ด๋Ÿฐ ์žฅ์ ์œผ๋กœ ์ธํ•ด ์ธํ„ฐ๋„ท ์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ธ์ฝ”๋”ฉ์ด๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋„๋ฆฌ ์“ฐ์ด๊ธฐ ์ „๋ถ€ํ„ฐ ํ˜•์„ฑ๋œ ์ธํ„ฐ๋„ท ๋ฌธ์„œ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•ด์„œ ์ž‘์„ฑ๋˜์—ˆ๊ณ , ํŠนํžˆ ๊ธฐ์กด์˜ HTML ํƒœ๊ทธ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ ์•„์Šคํ‚ค๋กœ ๊ตฌ์ถ•๋œ ์‚ฌ์ดํŠธ๋ฅผ ๋ณ„๋‹ค๋ฅธ ๋ณ€ํ™˜ ์ฒ˜๋ฆฌ ์—†์ด ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ์—„์ฒญ๋‚œ ์žฅ์ ์ด ์žˆ์—ˆ๋‹ค. ๋”๊ตฐ๋‹ค๋‚˜ UTF-8์€ ์—”๋””์•ˆ์— ์ƒ๊ด€์—†์ด ๋˜‘๊ฐ™์ด ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํฌ๋กœ์Šคํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ๋„ ๋›ฐ์–ด๋‚ฌ๋‹ค. ๊ณผ๊ฑฐ ํ•œ๊ตญ์—์„œ๋Š” ๊ตญ๊ฐ€๋ณ„ ์ธ์ฝ”๋”ฉ์ธ EUC-KR์„ ์“ฐ๋˜ ์‚ฌ์ดํŠธ๋“ค์ด ๋งŽ์ด ๋‚จ์•„ ์žˆ์–ด์„œ, ํ•œ ๋•Œ๋Š” ๊ฐ์ข… ๋ธŒ๋ผ์šฐ์ €์—์„œ '์ฃผ์†Œ๋ฅผ UTF-8๋กœ ๋ณด๋ƒ„' ์˜ต์…˜์„ ์ฒดํฌ ํ•ด์ œํ•˜๋Š” ํŒ(์ฃผ๋กœ ํ•œ๊ธ€ ์ด๋ฆ„์œผ๋กœ ๋œ ํŒŒ์ผ์˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ 404 ์—๋Ÿฌ๊ฐ€ ๋œฐ ๋•Œ)์ด ๋„๋ฆฌ ํผ์กŒ๋‹ค. ์ง€๊ธˆ์€ ์ผ๋ถ€ ๊ตฌ๋‹ฅ๋‹ค๋ฆฌ ์‚ฌ์ดํŠธ๋ฅผ ์ œ์™ธํ•˜๋ฉด UTF-8๋กœ ์˜ฎ๊ฒจ๊ฐ€๋Š” ์ถ”์„ธ์ด๋ฉฐ ๊ด€๊ณต์„œ ์‚ฌ์ดํŠธ๋„ ์ฐจ์ธฐ UTF-8 ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์š”์ฆ˜์€ EUC-KR์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์„œ๋ฒ„ ์ธก์—์„œ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋„๋ก ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

UTF-16 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด 1๋ฐ”์ดํŠธ๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์— ๊ทธ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ”์ดํŠธ๋ฅผ ์†Œ๋น„ํ•ด์•ผ ํ•˜๋Š”๋ฐ, UTF-8 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋Ÿฐ ๋ฌธ์ œ์ ์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ์ž๋‚˜ ํ•œ๊ธ€์€ ์ฃผ๋กœ 3๋ฐ”์ดํŠธ ์˜์—ญ์— ์ง‘์ค‘๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ๋ชจ๋“  ๋ฌธ์ž์— ๊ท ์ผํ•˜๊ฒŒ 2๋ฐ”์ดํŠธ๋งŒ ์‚ฌ์šฉํ•˜๋Š” UTF-16์— ๋น„ํ•ด ์˜คํžˆ๋ ค ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์„ธ๊ณ„์ ์œผ๋กœ๋Š” UTF-8 ์ธ์ฝ”๋”ฉ์ด ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์ผ๋‹จ UTF-8์„ ๋””ํดํŠธ ์ƒํƒœ๋กœ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์›น ๋“ฑ์ง€์—์„œ ์œ ๋‹ˆ์ฝ”๋“œ ์ ์šฉ์ด ์„œ๊ตฌ๊ถŒ์„ ์ค‘์‹ฌ์œผ๋กœ ํผ์กŒ๊ธฐ์— ์„œ๊ตฌ๊ถŒ ์ž…์žฅ์—์„œ๋Š” ๊ธฐ์กด 8๋น„ํŠธ ์ฝ”๋“œ(1๋ฐ”์ดํŠธ ์•„์Šคํ‚ค ์ฝ”๋“œ)์™€ ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” UTF-8์„ ๋งŽ์ด ์„ ํƒํ–ˆ๊ณ , ๊ฒฐ๊ตญ ์ด๊ฒƒ์ด ๋Œ€์„ธ๊ฐ€ ๋œ ๊ฒƒ์ด๋‹ค.

ASCII ํ˜ธํ™˜์„ฑ, C๋กœ ์ž‘์„ฑ๋œ Unix ํ”„๋กœ๊ทธ๋žจ ํ˜ธํ™˜์„ฑ, BOM์ด ํ•„์š”์—†๋‹ค๋“ ๊ฐ€, ์—”๋””์•ˆ์„ ๋”ฐ์ง€์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋“ ๊ฐ€, ํŒŒ์‹ฑ์— ์˜ˆ์™ธ๋ชจ๋“œ ํ™•์žฅ ๋ฌธ์ž ์ฒ˜๋ฆฌ ๋“ฑ๋“ฑ์ด ํ•„์š” ์—†๊ณ , ๊ทธ ๋•์— ์‹ค์ฒด ์ฒ˜๋ฆฌ์†๋„๋„ ๋” ๋น ๋ฅด๋‹ค๋“ ๊ฐ€ ํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๋ง ์ธก๋ฉด์—์„œ์˜ ์ˆ˜๋งŽ์€ ์žฅ์ ๋„ ์กด์žฌํ•œ๋‹ค.

๋‹ค๋ฅธ ์žฅ์ ๋“ค๋„ ๋งŽ์ง€๋งŒ ๋ฌด์—‡๋ณด๋‹ค๋„ ํ˜ผ๋™์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ๋‹จ์ผ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ด๋ผ๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค. UTF-16์€ ํ•˜์œ„ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ๊ฐ€ ๋งค์šฐ ์‹ฌ๊ฐํ–ˆ๋Š”๋ฐ, ์ธ์ฝ”๋”ฉ์— ์—ฌ๋Ÿฌ ํ•˜์œ„ ๋ฐฉ์‹์ด ์กด์žฌํ•ด ์ฝ์„ ๋•Œ๋งˆ๋‹ค ๊ทธ๋ƒฅ UTF-16์ด๋ผ๊ณ ๋งŒ ํ•˜๋ฉด ์ ˆ๋Œ€ ๋””์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ endian ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. big endian์—์„œ๋Š” ๋ฐ”์ดํŠธ๋ฅผ ๋ณธ๋ž˜ ์ˆœ์„œ๋กœ ์ €์žฅํ•˜์ง€๋งŒ, little endian์—์„œ๋Š” ์ˆœ์„œ๊ฐ€ ๋’ค๋ฐ”๋€๋‹ค. ๊ทธ๋ž˜์„œ endian์„ ํ˜ผ๋™ํ•˜๋ฉด ์ „ํ˜€ ๋‹ค๋ฅธ ๊ธ€์ž๊ฐ€ ํŠ€์–ด๋‚˜์˜ค๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด ๋•Œ๋ฌธ์— BOM์„ ๋ถ™์ด๋„๋ก ๋˜์–ด ์žˆ๋‹ค. ๋˜ UTF-16์˜ ํ•˜์œ„ ํ˜ธํ™˜์ธ UCS-2๋ผ๋Š” ๊ฒƒ๋„ ์กด์žฌํ•˜๋Š”๋ฐ, SMP ์˜์—ญ์˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ UTF-16 ๋ฌธ์„œ๋ฅผ UCS-2๋กœ ์ฝ์–ด๋“ค์ด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๊ทธ๋Ÿฐ UTF-16๊ณผ ๋‹ฌ๋ฆฌ UTF-8์€ ์ธ์ฝ”๋”ฉ์ด ๋”ฑ ํ•œ๊ฐ€์ง€๋งŒ ์กด์žฌํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์‹ค์ˆ˜ํ•  ์—ฌ์ง€ ์ž์ฒด๊ฐ€ ์—†๋‹ค. EUC-KR, Shift_JIS, EUC-JP, GB2312, Big5 ๋“ฑ ๋‚œ๋ฆฝํ•˜๋Š” ์ž๊ตญ์–ด ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ˆ˜์‹ญ๋…„๊ฐ„ ํ”ผ๋ฅผ ๋ณธ ๋™์•„์‹œ์•„๊ถŒ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋„ ๋‹จ ํ•œ๊ฐ€์ง€ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹๋งŒ ์กด์žฌํ•˜๋Š” UTF-8์€ ์‹ ์ด ๋‚ด๋ฆฐ ์„ ๋ฌผ์ด๋‚˜ ๋‹ค๋ฆ„์—†์—ˆ๊ณ , ๊ทธ๋ž˜์„œ ๋™์•„์‹œ์•„๊ถŒ์—์„œ ๋” ๊ฐ•๋ ฅํ•œ ์ง€์ง€๊ฐ€ ๋‚˜์™”๋‹ค. ํ•œ๊ตญ์–ด ์ธ์ฝ”๋”ฉ๋งŒ ํ•ด๋„ 3~4๊ฐ€์ง€๊ฐ€ ๋„˜์—ˆ๊ณ  ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋น„์Šทํ•œ ๊ฒƒ๋„ ์กด์žฌํ•ด์„œ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ์–ด์ฐจํ”ผ 2๋ฐ”์ดํŠธ ์˜์—ญ์— ์ž๊ตญ ๋ฌธ์ž๋ฅผ ๋‹ค ๋‹ด์„ ์ˆ˜์กฐ์ฐจ ์—†๋Š” ์ค‘๊ตญ์–ด๊ถŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€.

์˜คํžˆ๋ ค MS, ์• ํ”Œ ๋“ฑ์˜ ์„œ๊ตฌ๊ถŒ ๊ธฐ์กด ๋Œ€๊ธฐ์—…๋“ค์ด UTF-16์„ ๊ณ ์ˆ˜ํ–ˆ๋Š”๋ฐ, ์™œ๋ƒ๋ฉด UTF-8์ด ๊ฐœ๋ฐœ๋˜๊ธฐ ์ „์— UTF-16์œผ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ/๊ตญ์ œํ™” ์ง€์›์„ ๋‹ค ๋งŒ๋“ค์–ด๋†”์„œ ๋ฐ”๊พธ๊ธฐ๊ฐ€ ๋งค์šฐ ํž˜๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ˜„์žฌ๋Š” ์••๋„์ ์ธ ์žฅ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋Œ€์„ธ ์•ž์— ์Šฌ์Šฌ ์˜ฎ๊ธฐ๋Š” ์ถ”์„ธ๋‹ค. ์• ํ”Œ์€ CoreText๋‚˜ ์Šค์œ„ํ”„ํŠธ 5.x์—์„œ UTF-8๋กœ ๊ณต์‹์ ์œผ๋กœ ๋„˜์–ด๊ฐ”์ง€๋งŒ ๋ ˆ๊ฑฐ์‹œ์˜ MS๋‹ต๊ฒŒ MS์˜ ์ €ํ•ญ์€ ์—ฌ์ „ํ•˜๋‹ค. ์‹ฌ์ง€์–ด ์œˆ๋„์šฐ๋Š” ํ˜ธํ™˜์„ฑ์„ ์ด์œ ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์˜์—ญ์—์„œ๋Š” ์•„์ง๋„ MBCS๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์‹ค์ •์ด๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์—ญ์‹œ Windows 10 ์ถœ์‹œ ์ดํ›„๋กœ ์„œ์„œํžˆ ๋„˜์–ด๊ฐ€๋Š” ์ถ”์„ธ์ด๊ธด ํ•˜์ง€๋งŒ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋„˜์–ด๊ฐ€์ง€๋Š” ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค.

์šฉ๋Ÿ‰ ๋ฌธ์ œ๋Š” ์ผ๋‹จ ์••์ถ•ํ•˜๋ฉด ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ๊ณผ ๋ณ„ ์ฐจ์ด ์—†๋Š” ๋ฐ๋‹ค ํ…์ŠคํŠธ๊ฐ€ ์•„๋ฌด๋ฆฌ ์ปค์ ธ ๋ด์•ผ ์–ผ๋งˆ ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€/์˜์ƒ/๋น…๋ฐ์ดํ„ฐ ์‹œ๋Œ€์— ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์•ˆ๋œ๋‹ค.

ํ•œ๊ธ€์€ 3๋ฐ”์ดํŠธ ๊ตฌ๊ฐ„์— ์กด์žฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๊ธ€๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€ 1.5๋ฐฐ๋กœ ๋Š˜์–ด๋‚œ๋‹ค. ๋‹ค๋งŒ ์›น ํŽ˜์ด์ง€๋‚˜ XML ๊ฐ™์€ ์†Œ์Šค์ฝ”๋“œ๋ฅ˜์˜ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ํ•œ๊ธ€๊ณผ ๋‹ค์ˆ˜์˜ ๋กœ๋งˆ์ž๊ฐ€ ์„ž์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— EUC-KR๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ์„ UTF-8๋กœ ๋ณ€ํ™˜ํ•ด๋„ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ํฌ๊ฒŒ ๋Š˜์–ด๋‚˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์˜คํžˆ๋ ค UTF-16์—์„œ UTF-8๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“œ๋Š”๋ฐ, ํ•œ๊ธ€์€ 2๋ฐ”์ดํŠธ๊ฐ€ 3๋ฐ”์ดํŠธ๊ฐ€ ๋˜์ง€๋งŒ, ๋กœ๋งˆ์ž๋Š” 2๋ฐ”์ดํŠธ๊ฐ€ 1๋ฐ”์ดํŠธ๋กœ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ. ํ†ต๊ณ„ ๊ทธ๋ž˜๋„ ์šฉ๋Ÿ‰์ด ์‹ ๊ฒฝ ์“ฐ์ธ๋‹ค๋ฉด "NTFS ํด๋” ์••์ถ•" ๋“ฑ์˜ OS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋””์Šคํฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์œผ๋กœ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐ๋„ท์œผ๋กœ ์ „์†กํ•  ๋•Œ์—๋„ ์š”์ƒˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ์„œ๋ฒ„์—์„œ ์••์ถ•ํ•ด์„œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์••์ถ•ํ•ด ๋†“๊ณ  ๋ณด์•˜์„ ๋•Œ๋Š” ํฐ ์ฐจ์ด๊ฐ€ ์—†์–ด์ง„๋‹ค.

3. ์ธ์ฝ”๋”ฉ[ํŽธ์ง‘]

7๋น„ํŠธ ์ด๋‚ด์˜ ์ฝ”๋“œ๊ฐ’(0-127)์—๋Š” ๋งจ ์•ž ๋น„ํŠธ๋ฅผ 0์œผ๋กœ ๋ถ™์ธ๋‹ค. ์•„์Šคํ‚ค ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” 0๋ฒˆ๋ถ€ํ„ฐ 127๋ฒˆ๊นŒ์ง€์˜ ๋ฌธ์ž 128๊ฐœ๋Š” ์ •ํ™•ํ•˜๊ฒŒ 7๋น„ํŠธ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. 1๋ฐ”์ดํŠธ๋Š” 8๋น„ํŠธ์ด๋ฏ€๋กœ, ๋งจ ์•ž์— 0์„ ๋ถ™์ด๊ณ  ๋‚˜๋จธ์ง€ 7๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด 127๊นŒ์ง€๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. 00000000์€ ์•„์Šคํ‚ค ์ฝ”๋“œ 0๋ฒˆ์— ํ•ด๋‹นํ•˜๋ฉฐ, Null(ํ†ต์นญ '๋„๋ฌธ์ž')์„ ๋œปํ•œ๋‹ค.

7๋น„ํŠธ ์ดˆ๊ณผ, 11๋น„ํŠธ ์ด๋‚ด์˜ ์ฝ”๋“œ๊ฐ’(128 ~ 2,047)์€ ์ด 2๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๋จผ์ € ๊ฐ€์žฅ ์•ž์— 0 ๋Œ€์‹  1์„ ์จ์„œ ์ด ๋ฌธ์ž๊ฐ€ 1๋ฐ”์ดํŠธ๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์„ ์–ธํ•œ ๋’ค, 1์„ ํ•˜๋‚˜ ๋” ์จ์„œ ์ด ๋’ค์—๋Š” 1๊ฐœ์˜ ๋ฐ”์ดํŠธ๊ฐ€ ์ถ”๊ฐ€๋กœ ์˜จ๋‹ค๊ณ  ์„ ์–ธํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ 0์„ ์จ์„œ ์„ ์–ธ์„ ์ข…๋ฃŒํ•˜๋ฉด ์ฒซ 3๋น„ํŠธ๋Š” 110์ด ๋œ๋‹ค. ๋‚จ์€ 5๋น„ํŠธ๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์— ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ๋‘ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋Š” ๋งจ ์•ž 2๋น„ํŠธ๋กœ๋ฅผ 10์„ ์จ์„œ ์ด ๋ฐ”์ดํŠธ๋Š” ๋…๋ฆฝ์ ์ธ ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ์ „ ๋ฐ”์ดํŠธ์˜ ํ›„์† ๋ฐ”์ดํŠธ๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•ด์ฃผ๊ณ  ๋‚จ์€ 6๋น„ํŠธ๋ฅผ ๋ฌธ์ž ์‚ฌ์šฉ์— ๋ฐฐ๋‹นํ•œ๋‹ค. (8-3+8-2=11)

11๋น„ํŠธ ์ดˆ๊ณผ, 16๋น„ํŠธ ์ด๋‚ด์˜ ์ฝ”๋“œ๊ฐ’(2,048-65,535)์—๋Š” ์ด 3๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋งจ ์•ž์— 1์„ ์จ์„œ 1๋ฐ”์ดํŠธ ์ดˆ๊ณผ๋ฅผ ์„ ์–ธํ•˜๊ณ , 1์„ ๋‘ ๊ฐœ ๋” ์จ์„œ ํ›„์† ๋ฐ”์ดํŠธ๊ฐ€ 2๊ฐœ๋ผ๊ณ  ์„ ์–ธํ•˜๊ณ , 0์„ ์จ์„œ ์„ ์–ธ์„ ์ข…๋ฃŒํ•œ ๋’ค(1110) ๋‚จ์€ 4๊ฐœ์˜ ๋น„ํŠธ๋ฅผ ๋ฌธ์ž ํ‘œ๊ธฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ํ›„์† ๋ฐ”์ดํŠธ 2๊ฐœ๋Š” ๋งจ ์•ž์— 10์„ ์จ์„œ ํ›„์† ๋ฐ”์ดํŠธ์ž„์„ ๋ช…์‹œํ•ด ์ฃผ๊ณ , ๋‚จ์€ 6๋น„ํŠธ์”ฉ์„ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์— ์‚ฌ์šฉํ•œ๋‹ค. (8-4+8-2+8-2=16)

๋งˆ์ง€๋ง‰์œผ๋กœ 4๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(65,536-2,097,151)์—๋Š” ๋งจ ์•ž ๋ฐ”์ดํŠธ์—๋Š” 1์„ 4๊ฐœ ์“ฐ๊ณ  0์„ ์“ด ๋’ค ๋‚จ์€ 3๊ฐœ ๋น„ํŠธ๋กœ ๋ฌธ์ž๋ฅผ ํ‘œ๊ธฐ, ํ›„์† ๋ฐ”์ดํŠธ 3๊ฐœ๋Š” ์œ„์˜ ํ›„์† ๋ฐ”์ดํŠธ๋“ค๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ๊ฐ 6๊ฐœ์”ฉ์˜ ๊ฐ€์šฉ ๋น„ํŠธ๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค.

์ด๊ฑธ ์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
์ฝ”๋“œ๊ฐ’์˜ ์ž๋ฆฟ์ˆ˜
๋ฒ”์œ„
์ฒซ ๋ฐ”์ดํŠธ
๋‘˜์งธ ๋ฐ”์ดํŠธ
์…‹์งธ ๋ฐ”์ดํŠธ
๋„ท์งธ ๋ฐ”์ดํŠธ
๋‹ค์„ฏ์งธ ๋ฐ”์ดํŠธ
์—ฌ์„ฏ์งธ ๋ฐ”์ดํŠธ
7๋น„ํŠธ
0 ~ 0x7F(127)
0xxxxxxx
11๋น„ํŠธ
0x80(128) ~ 0x7FF(2,047)
110xxxxx
10xxxxxx
16๋น„ํŠธ
0x800(2,048) ~ 0xFFFF(65,535)
1110xxxx
10xxxxxx
10xxxxxx
21๋น„ํŠธ
0x10000(65,536) ~ 0x1FFFFF(2,097,151)
11110xxx
10xxxxxx
10xxxxxx
10xxxxxx
26๋น„ํŠธ
(๋ฏธ์‚ฌ์šฉ)
111110xx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
31๋น„ํŠธ
(๋ฏธ์‚ฌ์šฉ)
1111110x
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx

์ด ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด ๊ฐ๊ฐ์˜ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ UTF-8๋กœ ํ‘œํ˜„ํ•ด๋ณด๋ฉด ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

<ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ> p.164, ์ฑ…๋งŒ, 2020
  • ์˜ˆ์‹œ 1: ๋ฌธ์ž A๋Š” ์•„์Šคํ‚ค ๋ฌธ์ž์ด๋ฉฐ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์€ 65๋กœ, ์ด๋Š” 16์ง„์ˆ˜ 0x41(0100 0001)์ธ๋ฐ, 7๋น„ํŠธ ์ด๋‚ด๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ UTF-8๋กœ๋„ 0x41๋กœ ํ‘œํ˜„๋œ๋‹ค.
  • ์˜ˆ์‹œ 2: ๋ฌธ์ž ฯ€๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์ด 7๋น„ํŠธ๋ฅผ ๋ฒ—์–ด๋‚œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 11๋น„ํŠธ ์ด๋‚ด์— ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•œ ๋น„๊ต์  ์•ž์ชฝ์— ์œ„์น˜ํ•œ ๋ฌธ์ž๋ฉฐ, ๋”ฐ๋ผ์„œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 2๋ฐ”์ดํŠธ์— ํ‘œํ˜„์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค.
  • ์˜ˆ์‹œ 3: ๋ฌธ์ž ํ•œ์€ ํ•œ๊ธ€ ๋ฌธ์ž๋กœ 16๋น„ํŠธ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ 16๋น„ํŠธ๊ฐ€ 1์ด๋ฉฐ ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 3๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์œ ๋‹ˆ์ฝ”๋“œ์—๋Š” ์™„์„ฑํ˜• ํ•œ๊ธ€ 11,172์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์กฐํ•ฉํ˜• ์ž๋ชจ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด์ฒ˜๋Ÿผ ํ•œ๊ธ€์˜ UTF-8 ์ธ์ฝ”๋”ฉ ๊ฐ’์€ ๋ชจ๋‘ ๊ฐ ๋ฌธ์ž๋‹น 3๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.

ํ•œ๊ธ€ ์™„์„ฑํ˜•์€ ์œ ๋‹ˆ์ฝ”๋“œ ์ƒ์œผ๋กœ U+AC00~U+D7A3์ด๋ฏ€๋กœ, 10์ง„๋ฒ•์œผ๋กœ๋Š” 44,032~55,203์˜ ์˜์—ญ์ด๊ณ , ๋”ฐ๋ผ์„œ 3๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด '๊ฐ‘'์˜ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ’์€ 16์ง„์ˆ˜ 0xAC11(1010 1100 0001 0001)์ธ๋ฐ, ์ด๋Š” ์ด 16๋น„ํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ 1110 1010 1011 0000 1001 0001 ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์กฐํ•ฉํ˜•์€ U+1100~11FF ์˜์—ญ์ธ๋ฐ, ์—ฌ๊ธฐ๋„ 4,352~4,607์ด๋ผ ๊ฒฐ๊ตญ 3๋ฐ”์ดํŠธ ์˜์—ญ์ด๋‹ค. ์™„์„ฑํ˜• ๊ธ€์ž ํ•˜๋‚˜๋„ 3๋ฐ”์ดํŠธ์ธ๋ฐ, ์กฐํ•ฉํ˜•์€ ์ž๋ชจ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๊ฐ๊ฐ 3๋ฐ”์ดํŠธ์”ฉ์ด๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜› ํ•œ๊ธ€์„ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์กฐํ•ฉํ˜•์„ ์‚ฌ์šฉํ•  ํ•˜๋“ฑ์˜ ์ด์œ ๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์ด ๋•Œ๋ฌธ.

4. ๋ฌธ์„œ์—์˜ UTF-8[ํŽธ์ง‘]

UTF-8์€ ์—„๋ฐ€ํžˆ ๋”ฐ์ง€๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ๊ฒฉ์ด์ง€ ๋ฌธ์ž ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค. UTF ์ž์ฒด๊ฐ€ ์œ ๋‹ˆ์ฝ”๋“œ ์ „์†ก ํ˜•์‹(Unicode Transfer Format)์ด๋ผ๋Š” ๋œป์ด๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ž ์ฝ”๋“œ๊ฐ€ ์ „์†ก ๊ทœ๊ฒฉ์œผ๋กœ์„œ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž ์ฝ”๋“œ๋กœ ์œ ์šฉ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๋ฟ์ด๋‹ค. ๊ฐ™์€ ์˜๋ฏธ๋กœ UTF-16๋„ ์ „์†ก ๊ทœ๊ฒฉ์ด์ง€๋งŒ ์ด ๊ทœ๊ฒฉ์ด ์‹ค์ œ ์œ ๋‹ˆ์ฝ”๋“œ์˜ BMP0๊ณผ ์™„์ „ํžˆ ์ผ์น˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ MS ๊ณ„์—ด ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ์–ธ์–ด(C/C++ ๋“ฑ)๋ฅผ ์ด์šฉํ•ด ๋น„ ์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋ฉ€ํ‹ฐ๋ฐ”์ดํŠธ ์บ๋ฆญํ„ฐ๋ฅผ UTF-8 ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์™€์ด๋“œ๋ฐ”์ดํŠธ ํ˜•์‹์˜ ์™„์ „ 2๋ฐ”์ดํŠธ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๋‹ค์‹œ UTF-8 ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ์–ด ๋ฉ€ํ‹ฐ๋ฐ”์ดํŠธ ํ˜•์‹์œผ๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋ˆ…์Šค์™€ ๊ฐ™์€ MS ํ”„๋ ˆ์ž„์›Œํฌ ์ด์™ธ์˜ ํ”Œ๋žซํผ์—์„œ๋„ ๋ช…์‹œ์ ์ด์ง€๋งŒ ์•Š์„ ๋ฟ์ด์ง€ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋Š” UTF-8์„ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•œ๊ธ€ ๋‹จ์–ด๊ฐ€ UTF-8 ํ˜•์‹์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋‚˜์˜ฌ ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๋ฉ”๋ชจ์žฅ๊ณผ ๊ฐ™์€ ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ๋‹จ์–ด๋ฅผ ์จ์„œ UTF-8 ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ ํ›„ ํ—ฅ์Šค ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณด๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ๋ฉ”๋ชจ์žฅ์„ ์“ธ ๊ฒฝ์šฐ ํ—ฅ์Šค ์—๋””ํ„ฐ๋กœ ์—ด์—ˆ์„ ๋•Œ EF BB BF๋ผ๋Š” ๋ฌธ์ž๊ฐ€ ํŒŒ์ผ ๊ฐ€์žฅ ์•ž์— ๋ถ™๋Š”๋‹ค. ์ด๊ฒƒ์„ BOM(Byte Order Mark)์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด๊ฑด ๋นผ๊ณ  ๊ทธ ๋’ค๋ถ€ํ„ฐ ๋ณด๋ฉด ๋œ๋‹ค. ๋‹ค๋งŒ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ—ค๋” ์š”์ฒญ์„ ํ•  ๋•Œ์—๋Š” ์ƒํ™ฉ์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋ณดํ†ต ํ—ค๋” ์š”์ฒญ(์ฃผ๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์„ธ์…˜์— ์“ฐ์ž„)์€ ์ถœ๋ ฅ์ด ์žˆ๊ธฐ ์ด์ „์— ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ์‚ฌํ•ญ์ธ๋ฐ, BOM์ด ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์ด ์ถœ๋ ฅ์ด ๋˜์–ด ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ—ค๋” ์š”์ฒญ์ด ์ „๋ถ€ ๋„๋กœ์•„๋ฏธํƒ€๋ถˆ์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค. ๋”์šฑ์ด BOM์€ ๋ณด์ด์ง€๋„ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋ฒ„์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ๋Š” ์ ˆ๋Œ€๋กœ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์ž‘์—…ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฐธ๊ณ ๋กœ UTF-8์ด ์•„๋‹Œ ์œ ๋‹ˆ์ฝ”๋“œ ์ž์ฒด์˜ BOM์€ U+FEFF์ด๋ฉฐ, Little Endian ๋ฐฉ์‹์—์„œ๋Š” FF FE๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋…ํ•  ๋•Œ๋Š” ํผ์„ผํŠธ ๊ธฐํ˜ธ๋ฅผ ๋นผ๊ณ  ํ—ฅ์Šค ์—๋””ํ„ฐ์— ๊ทธ๋Œ€๋กœ ์“ด ๋‹ค์Œ ์ €์žฅํ•œ ๋’ค ํ…์ŠคํŠธ ์—๋””ํ„ฐ๋กœ ์ฝ์œผ๋ฉด ๋œ๋‹ค. BOM์€ ๊ฐ๊ฐ ๋ช‡ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๊ณ , ํŒŒ์ผ์— BOM์ด ์จ์งˆ ์ˆ˜๋„ ์žˆ๊ณ  ์•ˆ ์จ์งˆ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค ๊ณ„์—ด์—์„œ๋Š” ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋ฏ€๋กœ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ฝ”๋”ฉ ๋˜๋Š” ๋ณ€ํ™˜์„ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ํŠนํžˆ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋Š” BOM์„ ์•ˆ ์“ฐ๋Š”๋ฐ, ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ํ•ฉ์ณ์ ธ์„œ ํ•˜๋‚˜์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ BOM์ด ์žˆ์œผ๋ฉด ํŒŒ์ผ๋“ค์ด ํ•ฉ์ณ์งˆ ๋•Œ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ธ์‹ํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ์ œํ’ˆ๊ตฐ์ด UTF-8์— BOM์„ ๋ถ™์—ฌ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์€ ์œ ๋‹ˆ์ฝ”๋“œ ์ปจ์†Œ์‹œ์—„์—์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 2.6 Encoding Schemes ์‚ฌ์‹ค UTF-8์€ ๊ตณ์ด Endian์„ ๋”ฐ์ง€๋ฉด Big-Endian ๋ฐฉ์‹ ๊ณ ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— BOM์˜ ์กด์žฌ ์ž์ฒด๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค๋Š” ์ƒํ™ฉ์ด ์ข€ ๋‹ฌ๋ผ์„œ, ์†Œ์Šค ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ๊ฒฝ์šฐ, BOM์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ANSI ๋˜๋Š” ์‹œ์Šคํ…œ ์ฝ”๋“œ ํŽ˜์ด์ง€๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋“ค์—ฌ ๋น„ ASCII ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ์ฝ”๋“œ ์ž์ฒด๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค์—์„œ ๋ฌธ์ž์—ด(ํŠนํžˆ ํ•œ๊ธ€)์„ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์†Œ์Šค ํŒŒ์ผ์˜ ์ธ์ฝ”๋”ฉ์„ UTF-8 BOM์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ, GCC์˜ ๊ฒฝ์šฐ BOM์ด ์žˆ์œผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ํŒŒ์ผ์€ UTF-8๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

์šด์˜์ฒด์ œ ์ž์ฒด์˜ ์ธ์ฝ”๋”ฉ ํ˜•์‹์„ UTF-8๋กœ ํ†ต์ผํ•œ ๋ฆฌ๋ˆ…์Šค๋‚˜ macOS์™€ ๋‹ฌ๋ฆฌ ์œˆ๋„์šฐ๋Š” ๋ ˆ๊ฑฐ์‹œ ํ˜ธํ™˜์„ ์œ„ํ•ด ์ฝ˜์†” ์ธ์ฝ”๋”ฉ์œผ๋กœ MBCS๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด, GCC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ C/C++ ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ UTF-8 ์†Œ์Šค์˜ ํ•œ๊ธ€ ์ถœ๋ ฅ์„ ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์• ๋กœ์‚ฌํ•ญ์ด ๊ฝƒํ•€๋‹ค. ์šฐ์„  ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ปดํŒŒ์ผ ์˜ต์…˜์— -fexec-charset=CP949๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํŠน์ • ์ฝ”๋“œ ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋ฉด OS ์–ธ์–ด์™€ ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜์กด์ ์ธ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.

๋˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์€ ๋ฌธ์ž์—ด ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ wchar_t, wprintf() ๋“ฑ์˜ ์™€์ด๋“œ๋ฐ”์ดํŠธ ์ž๋ฃŒํ˜• ๋ฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. main ํ•จ์ˆ˜ ๋‚ด์— setlocale(LC_ALL, "") ํ•จ์ˆ˜ ์„ ์–ธ์ด ํ•„์š”ํ•˜๋‹ค. wprintf() ์„œ์‹ ์ง€์ •์ž์˜ ๊ฒฝ์šฐ MinGW-GCC๋Š” C์—์„œ %s, C++์—์„œ %S์ด๊ณ  VC++๋Š” ์–‘์ชฝ ๋ชจ๋‘ %s์ด๋‹ค. ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ ์œˆ๋„์šฐ API์˜ _setmode(_fileno(stdout), _O_U16TEXT) ๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. # ๋‹ค๋งŒ, ์ด ๊ฒฝ์šฐ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์‹œ์—๋Š” ๋ฌด์กฐ๊ฑด ์œ ๋‹ˆ์ฝ”๋“œ ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ wchar_t๋Š” ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ ์ฐจํ›„ ์ด์‹์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์œˆ๋„์šฐ์—์„œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 2๋ฐ”์ดํŠธ์ด๊ณ  ๋ฆฌ๋ˆ…์Šค์—์„œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 4๋ฐ”์ดํŠธ์ธ๋ฐ, ์ปดํŒŒ์ผ ์˜ต์…˜ -fshort-wchar๋ฅผ ์ง€์ •ํ•˜๋ฉด ํฌ๊ธฐ๋ฅผ 2๋ฐ”์ดํŠธ๋กœ ํ†ต์ผ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ wchar_t๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์˜ ์ •์ƒ์ ์ธ ์‹คํ–‰์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ ํฌ๋กœ์Šค์ปดํŒŒ์ผ์„ ํฌ๊ธฐํ•˜๊ณ  wchar_t๋ฅผ ์“ฐ๊ฑฐ๋‚˜, ICU๋ผ๋Š” ์บ๋ฆญํ„ฐ ์…‹ ๋ณ€ํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ˜„์žฌ๋กœ์„œ๋Š” ์ตœ์„ ์˜ ํ•ด๋‹ต์ด๋‹ค. ๋Œ€์‹  ICU๋Š” ๋นŒ๋“œ ๊ณผ์ •์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค. GNU์˜ libiconv๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ๊ฐ€๋ฒผ์›Œ์ง€์ง€๋งŒ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •์ ์œผ๋กœ ๋งํฌํ•  ๊ฒฝ์šฐ[1] ๋ผ์ด์„ผ์Šค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์˜์–ด๋งŒ ์“ฐ๋˜๊ฐ€

์œˆ๋„์šฐ ์ธ์‚ฌ์ด๋” ํ”„๋ฆฌ๋ทฐ 17035(RS4)๋ถ€ํ„ฐ "์‹œ์Šคํ…œ ๋กœ์บ˜ ๋ณ€๊ฒฝ" ์˜ต์…˜์— "Beta: ์„ธ๊ณ„ ์–ธ์–ด ์ง€์›์„ ์œ„ํ•ด Unicode UTF-8 ์‚ฌ์šฉ"์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. # ์œˆ๋„์šฐ๊ฐ€ ์›ฌ์ผ๋กœ? ์ด๋ฅผ ํ†ตํ•ด ์œˆ๋„์šฐ์—์„œ ๋ณ„๋„์˜ ๋ณ€ํ™˜ ๊ณผ์ • ์—†์ด UTF-8์„ ์ œํ•œ ์—†์ด ๋งˆ์Œ๊ป ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์€ '๏ฟฝ'์™€ ๊ฐ™์€ ๋Œ€์น˜ ๋ฌธ์ž๋ฅผ ๋„์šฐ๋ฉฐ ๋ฌธ์ž์—ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฃผ๋กœ ๊ตญ๋‚ด ๊ธˆ์œต๊ถŒ ๋ณด์•ˆ ํ”„๋กœ๊ทธ๋žจ, ๋˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์™€ ํŠน์ • ์ธ์ฝ”๋”ฉ์„ ์„ž์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ์ด์— ๋Œ€ํ•œ ์˜ˆ๋กœ ์™€์ฝค ํƒ€๋ธ”๋ › ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ์ œ์™ธํ•œ ์˜ค๋Š˜๋‚ ์˜ ๋Œ€๋‹ค์ˆ˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ž˜ ์ง€์›ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ƒ์˜ ํฐ ๋ฌธ์ œ๋Š” ์—†๋‹ค. Microsoft PowerPoint๋Š” ์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ–ˆ์„ ๊ฒฝ์šฐ ์ƒˆ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ํ…์ŠคํŠธ๊ฐ€ ๊บ ์ ธ์„œ ๋‚˜์˜ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ง€์šฐ๊ณ  ๋‹ค์‹œ ์“ฐ๋ฉด ๋˜๋ฏ€๋กœ ์ปค๋‹ค๋ž€ ๋ฌธ์ œ์ ์€ ์—†๋‹ค๊ณ  ๋ด๋„ ์ข‹๋‹ค.

์œˆ๋„์šฐ 10 19H1 ๋นŒ๋“œ์˜ ๋ฉ”๋ชจ์žฅ์—์„œ BOM ์—†๋Š” UTF-8์ด ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ, ์ €์žฅ ์‹œ BOM์„ ๋ถ™์ผ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ๋‹ค๋งŒ BOM ์—†๋Š” UTF-8 ๋ฌธ์„œ ์ž์ฒด๋Š” ๊ธฐ์กด ๋ฉ”๋ชจ์žฅ(์œˆ๋„์šฐ XP ์ด์ƒ)์—์„œ๋„ ์ž˜๋งŒ ์ฝ์–ด๋‚ธ๋‹ค.

C++11์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์œ ๋‹ˆ์ฝ”๋“œ ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. UTF-8 ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ์—๋Š” char ์ž๋ฃŒํ˜•์—์„œ ๋ฆฌํ„ฐ๋Ÿด์„ u8" "๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค. ํ–ฅํ›„ C++20์—์„œ UTF-8 ๋‹จ๋… ์ž๋ฃŒํ˜•์ธ char8_t๊ฐ€ ์ถ”๊ฐ€๋  ์˜ˆ์ •์ด๋‹ค. UTF-16์˜ ๊ฒฝ์šฐ์—๋Š” char16_t ์ž๋ฃŒํ˜•์—์„œ u" "๋กœ ์„ ์–ธํ•˜๋ฉด ๋˜๊ณ , UTF-32์˜ ๊ฒฝ์šฐ์—๋Š” char32_t ์ž๋ฃŒํ˜•์—์„œ U" "๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค. ๋‹จ, ์ปดํŒŒ์ผ๋Ÿฌ์— ์ข…์†์ ์ธ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋งคํฌ๋กœ๋ฅผ ์ด์šฉํ•ด __STDC_UTF_8__, __STDC_UTF_16__, __STDC_UTF_32__๋ฅผ 1๋กœ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค. ์œˆ๋„์šฐ์—์„œ๋Š” UTF-8 ๋ฌธ์ž์—ด์„ ์ง์ ‘ ์ž…์ถœ๋ ฅํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ, ์œˆ๋„์šฐ ์ธ์‚ฌ์ด๋” ํ”„๋ฆฌ๋ทฐ 17035(RS4)๋ถ€ํ„ฐ ์ฝ˜์†”์˜ ์ฝ”๋“œ ํŽ˜์ด์ง€๋ฅผ 65001๋กœ ์„ค์ •ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. ๋‹จ, ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๋งŒ UTF-8๋กœ ๋ณ€๊ฒฝ๋  ๋ฟ, C++ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ (wchar_t๋ฅผ ์ธ์ž๋กœ ๋ฐ›์ง€ ์•Š๋Š”) ๋น„์œ ๋‹ˆ์ฝ”๋“œ ํ•จ์ˆ˜๋“ค์€ ์ „๋ถ€ ์šด์˜์ฒด์ œ์˜ ์ฝ”๋“œ ํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ •๊ทœํ‘œํ˜„์‹๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด UTF-8 ๋ฌธ์ž์—ด์„ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ด๊ฒƒ๊นŒ์ง€ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ UTF-8 ๋ฒ ํƒ€ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค.

ํ•œ๊ธ€ ํŽ˜์ด์ง€๋ฅผ ์ผ๋ณธ์–ด ์ธ์ฝ”๋”ฉ์œผ๋กœ ํ•ด์„ํ•˜๊ฑฐ๋‚˜, ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ๋“ฑ์€ UTF-8์ด ์•„๋‹Œ, ๊ฐ ๊ตญ๊ฐ€๋ณ„ ์ธ์ฝ”๋”ฉ(EUC-KR, Shift-JIS ๋“ฑ)์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋ฌผ๋ก  ์œ ๋‹ˆ์ฝ”๋“œ ํŽ˜์ด์ง€๋„ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๊นจ์ง„๋‹ค.

์›น ํŽ˜์ด์ง€์—์„œ ์ธ์ฝ”๋”ฉ ์„ ์–ธ์„ ํ•ด์ฃผ๋Š” ๊ฑด ๊ธฐ๋ณธ ์ค‘์˜ ๊ธฐ๋ณธ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๊ทธ ๊ธฐ๋ณธ์„ ์ง€ํ‚ค์ง€ ์•Š์•„์„œ ๊ธ€์ž๊ฐ€ ๊นจ์ง€๋Š” ๋ฌธ์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. Microsoft Edge ๋“ฑ ์ด ๊ธฐ๋Šฅ์„ ๋นผ๋จน์€ ๋ธŒ๋ผ์šฐ์ €๋„ ์žˆ๋‹ค. ํฌ๋กฌ ์—ญ์‹œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ธ์ฝ”๋”ฉ ์ง€์ •์ด ๋น ์ง€๊ณ  ์ž๋™์œผ๋กœ ์„ ํƒ๋˜๋„๋ก ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ, ์ด ๋•Œ๋ฌธ์— ์ผ๋ถ€ ํŽ˜์ด์ง€๋ฅผ EUC-KR์ด๋‚˜ Windows-1252(์„œ์œ ๋Ÿฝ์–ด)๋กœ ์ž˜๋ชป ํ•ด์„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋”๋Ÿฌ ์žˆ๋‹ค. ์›น ํŽ˜์ด์ง€์˜ ์†Œ์Šค๋ฅผ ๋ณด๋ฉด <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> ์ด๋ ‡๊ฒŒ ์ ํžŒ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ charset=UTF-8 ๋ถ€๋ถ„์ด ์ธ์ฝ”๋”ฉ ์„ ์–ธ์ด๋‹ค.[2] ์–ด๋–ค ์›น ํŽ˜์ด์ง€์—๋Š” UTF-8 ๋Œ€์‹ ์— EUC-KR์ด๋‚˜ Shift_JIS ๋“ฑ์ด ์ ํ˜€์žˆ๊ธฐ๋„ ํ•˜๋‹ค. HTML5๋ถ€ํ„ฐ๋Š” <meta charset="UTF-8">๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค.

5. URL์—์„œ UTF-8[ํŽธ์ง‘]

  • namu.wiki/w/์œ ๋‹ˆ์ฝ”๋“œ
  • namu.wiki/w/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C
    • %EC%9C%A0 = ์œ  (UTF-8: 0xEC 0x9C 0xA0)
    • %EB%8B%88 = ๋‹ˆ (UTF-8: 0xEB 0x8B 0x88)
    • %EC%BD%94 = ์ฝ” (UTF-8: 0xEC 0xBD 0x94)
    • %EB%93%9C = ๋“œ (UTF-8: 0xEB 0x93 0x9C)

URL์—์„œ ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž ๋ฐ ์ผ๋ถ€ ํŠน์ˆ˜ ๋ฌธ์ž ์˜์—ญ ๋ฐ–์˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ URL escape code๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ธ์ฝ”๋”ฉํ•ด์„œ ํ‘œ์‹œํ•œ๋‹ค. URL escape code๋Š” ์ž„์˜์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ด๋“ค ์ด์™ธ์˜ ๋ฌธ์ž์—ด์ด URL์— ํฌํ•จ๋˜์–ด ์žˆ์„ ๋•Œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ์—„๋ฐ€ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ์ธ์ฝ”๋”ฉํ• ์ง€ ์ •์ฑ…์ด ๋‹ค๋ฅด๋‹ค. ์ฆ‰, URL escape code๋กœ ์ธ์ฝ”๋”ฉ ๋˜์—ˆ๋‹ค๊ณ  ํ•˜์—ฌ ํ•ญ์ƒ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด์ด ์™”๋‹ค๋Š” ๋ณด์žฅ์€ ์—†๋‹ค.

2000๋…„๋Œ€ ์ดˆ๋ฐ˜์— ๊ทธ๋ฆผ ๋“ฑ์ด ์ œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š์œผ๋ฉด 'URL์„ ํ•ญ์ƒ UTF-8๋กœ ๋ณด๋‚ด๊ธฐ' ์˜ต์…˜์„ ๋„๋ผ๋Š” ๋ง์ด ๋งŽ์ด ๋‚˜์™”๋Š”๋ฐ, ๊ณผ๊ฑฐ์˜ ์›น ๊ฐœ๋ฐœ์ž๋“ค์ด ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ, ์œ ๋‹ˆ์ฝ”๋“œ, ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋“ฑ์— ํฐ ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์•˜๋˜ ์‹œ์ ˆ์˜ ํ”์ ์ด๋‹ค. ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ์„ ์ ์šฉ์‹œํ‚ค์ง€ ์•Š์€ ๋ฌธ์ž์—ด์ด URL ๋‚ด๋ถ€์— ์˜จ ๊ฒฝ์šฐ ์ € ์˜ต์…˜์ด ์ผœ์ ธ ์žˆ์œผ๋ฉด URL์— ์˜ฌ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์„ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์„ ํผ์„ผํŠธ ์ธ์ฝ”๋”ฉ์„ ์ ์šฉ์‹œ์ผœ์„œ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ•˜์ง€๋งŒ, ํ•œ๋•Œ๋Š” ์ƒ๋‹น์ˆ˜ ์›น ์„œ๋ฒ„๊ฐ€ EUC-KR ๊ธฐ๋ฐ˜์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— UTF-8 ๋ฌธ์ž์—ด์ด ์˜ค๋ฉด ํŒŒ์ผ์„ ์ œ๋Œ€๋กœ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ € ์˜ต์…˜์„ ๊บผ ๋ฒ„๋ฆฌ๋ฉด EUC-KR๋กœ URL ์ธ์ฝ”๋”ฉํ•ด ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์„ ์›น ์„œ๋ฒ„์—์„œ ์ œ๋Œ€๋กœ ์ฐพ๊ฒŒ ๋œ๋‹ค. ์ง€๊ธˆ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ€ ๋ชจ๋‘ UTF-8๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ๊ฐœ๋ฐœ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ, EUC-KR ๋“ฑ ๊ตณ์ด ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์›น์‚ฌ์ดํŠธ ์ชฝ์—์„œ ์•Œ์•„์„œ URL ์ธ์ฝ”๋”ฉํ•ด ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค. ์˜คํžˆ๋ ค ์ง€๊ธˆ์€ UTF-8๋กœ ๋ณด๋‚ด๊ธฐ ์˜ต์…˜์ด ๊บผ์ ธ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ € ์˜ต์…˜์„ ์ผœ๋ผ๊ณ  ํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ๋“ค๋„ ์กด์žฌํ•œ๋‹ค.

๋ฌผ๋ก  ์ด๊ฑด ํŒŒ์ผ์ด๋‚˜ ๊ฒฝ๋กœ๋ช…์ด ํ•œ๊ธ€์ผ ๊ฒฝ์šฐ์—๋งŒ ๊ทธ๋žฌ๊ณ , ์˜๋ฌธ์ผ ๊ฒฝ์šฐ์—๋Š” ์˜ต์…˜์ด ์ผœ์ ธ ์žˆ๊ฑด ๊บผ์ ธ ์žˆ๊ฑด ๋ฌธ์ œ์—†์ด ์ฐพ๋Š”๋‹ค. UTF-8์˜ 1๋ฐ”์ดํŠธ ์˜์—ญ๊ณผ EUC-KR์˜ 1๋ฐ”์ดํŠธ ์˜์—ญ์€ ์•„์Šคํ‚ค ์ฝ”๋“œ์™€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ถ€ ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ํŒŒ์ผ์„ ์˜ฌ๋ฆด ๋•Œ ์„œ๋ฒ„์—์„œ ์ง€์ •ํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์˜ฌ๋ผ๊ฐ€๋„๋ก ์„ค๊ณ„ํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค.

์„œ๋ฒ„์— ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๊ณ  ๋‚œ ๋’ค์— ํŒŒ์ผ๋ช…์ด ์ด์ƒํ•˜๊ฒŒ ๋ฐ”๋€” ๋•Œ UTF-8 ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฒƒ์ผ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ASCII ์˜์—ญ ๋ฐ– ๋ฌธ์ž๋“ค์ด ์น˜ํ™˜๋˜๋‹ค ๋ณด๋‹ˆ, ๊ณต๋ฐฑ์ด๋‚˜ ํŠน์ˆ˜ ๋ฌธ์ž์˜ ๊ฒฝ์šฐ ๋งŽ์ด ์น˜ํ™˜๋˜๋Š” ํŽธ์ด๋ฉฐ, ์šฉ๋„์— ๋”ฐ๋ผ URL์šฉ ํŠน์ˆ˜ ๊ธฐํ˜ธ๋Š” ์น˜ํ™˜๋  ๋•Œ๋„, ์น˜ํ™˜๋˜์ง€ ์•Š์„ ๋•Œ๋„ ์žˆ๋‹ค.[3] ์ฃผ๋กœ ์น˜ํ™˜๋˜๋Š” ๋ฌธ์ž๋“ค์„ ๋‚˜์—ดํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • ๊ณต๋ฐฑ(space): %20[4]
  • !: %21
  • (: %28
  • ): %29
  • +: %2B
  • -: %2D
  • /: %2F
  • [: %5B
  • ]: %5D
  • _: %5F

์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ์™€ ๊ตฌ๋ฒ„์ „ Microsoft Edge[5]์—์„œ๋Š” UTF-8๋กœ ์ €์žฅ๋œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ EUC-KR๋กœ ์ฝ์–ด๋“ค์—ฌ์„œ ๋ฌธ์ž ๊นจ์ง์ด ๋ฐœ์ƒํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํฌ๋กฌ์ด๋‚˜ ํŒŒ์ด์–ดํญ์Šค์—์„œ๋Š” ๋ฉ€์ฉกํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.

6. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]

[1] ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์— ์ „๋ถ€ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
[2] text/html ๋Œ€์‹ ์— application/xhtml+xml ์ด ์ ํžŒ ๊ณณ๋„ ์žˆ๊ณ  ์•„์˜ˆ ๋‹ค๋ฅธ ๊ฒŒ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
[3] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋‘ ์น˜ํ™˜ํ•˜๋ฉด escape() ๋ฉ”์„œ๋“œ๋ฅผ, URL์šฉ : / ; ? ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด encodeURI()๋‚˜, encodeURIComponent() ๋ฉ”์„œ๋“œ๋ฅผ ์“ฐ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋กœ ์ด๋ ‡๊ฒŒ ๋œ๋‹ค.
[4] +๋‚˜ _๋กœ ์ธ์ฝ”๋”ฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
[5] 2019๋…„๋ถ€ํ„ฐ๋Š” ํฌ๋กฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ํ•ด๋‹น์‚ฌํ•ญ์ด ์—†๋‹ค.