์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
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์์ ์ ๊ณตํ๋ ๋์คํฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ผ๋ก ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค. ์ธํฐ๋ท์ผ๋ก ์ ์กํ ๋์๋ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์น ์๋ฒ์์ ์์ถํด์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์์ถํด ๋๊ณ ๋ณด์์ ๋๋ ํฐ ์ฐจ์ด๊ฐ ์์ด์ง๋ค.
์ด๋ฐ ์ฅ์ ์ผ๋ก ์ธํด ์ธํฐ๋ท ์ฌ์ดํธ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ธ์ฝ๋ฉ์ด๋ค. ์ ๋์ฝ๋๊ฐ ๋๋ฆฌ ์ฐ์ด๊ธฐ ์ ๋ถํฐ ํ์ฑ๋ ์ธํฐ๋ท ๋ฌธ์๋ค์ ๋๋ถ๋ถ ์์คํค ์ฝ๋๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํด์ ์์ฑ๋์๊ณ , ํนํ ๊ธฐ์กด์ 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๋นํธ ์ด๊ณผ, 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 | 0xxxxxxx | |||||
11๋นํธ | 0x80 ~ 0x7FF | 110xxxxx | 10xxxxxx | ||||
16๋นํธ | 0x800 ~ 0xFFFF | 1110xxxx | 10xxxxxx | 10xxxxxx | |||
21๋นํธ | 0x10000 ~ 0x1FFFFF | 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 ํจ์ ๋ด์์๋๋ฉด ์์ด๋ง ์ฐ๋๊ฐ
์๋์ฐ ์ธ์ฌ์ด๋ ํ๋ฆฌ๋ทฐ 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" "๋ก ์ ์ธํ๋ฉด ๋๋ค. ๋จ, ์ปดํ์ผ๋ฌ์ ์ข ์์ ์ธ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ๋งคํฌ๋ก๋ฅผ ์ด์ฉํด
ํ๊ธ ํ์ด์ง๋ฅผ ์ผ๋ณธ์ด ์ธ์ฝ๋ฉ์ผ๋ก ํด์ํ๊ฑฐ๋, ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ ๋ฑ์ 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">๊ณผ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ์ธ ์๋ ์๋ค.
ํ๊ธ ๋จ์ด๊ฐ 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 ์ฌ์ฉ"์ด ์ถ๊ฐ๋์๋ค. #
์๋์ฐ 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๋
๋ถํฐ๋ ํฌ๋กฌ ๊ธฐ๋ฐ์ผ๋ก ๋ณ๊ฒฝ๋์ด ํด๋น์ฌํญ์ด ์๋ค.