์๏ฟฝ๋ ์ด ๊ธ์ ์ ๋ค์ด๊ฐ ๊ฑฐ์์?
์๏ฟฝ๋ ์ด ๊ธ์ ์ ๋ค์ด๊ฐ ๊ฑฐ์์? ๊ด๋ จ
FEConf2024์์ ๋ฐํํ <์๏ฟฝ๋ ์ด ๊ธ์ ์ ๋ค์ด๊ฐ ๊ฑฐ์์? (๋ถ์ : ์์๋๋ฉด ๊ฐ๋ ์ธ๋ชจ ์๋ ํ๊ธ ์ ๋์ฝ๋ ์์ ์ ๋ณต)[1]>๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๋ฐํ ๋ด์ฉ์ 2ํ๋ก ๋๋์ด ๋ฐํํฉ๋๋ค. 1ํ์์๋ ์ ๋์ฝ๋์ ๋ํด ์์๋ณด๊ณ , ์ ๋์ฝ๋์์์ ํ๊ธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. 2ํ์์๋ ๋ฌผ์ํ ํน์๋ฌธ์๊ฐ ์ ์๊ฒจ๋๋์ง, ์ด๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง์ ๋ํด ์์๋ด ๋๋ค. ๋ณธ๋ฌธ์ ์ฝ์ ๋ ์ด๋ฏธ์ง์ ์ถ์ฒ๋ ๋ชจ๋ ์ด ์ฝํ ์ธ ์ ๊ฐ์ ์ ๋ชฉ์ ๋ฐํ ์๋ฃ๋ก, ๋ฐ๋ก ์ถ์ฒ๋ฅผ ํ๊ธฐํ์ง ์์์ต๋๋ค.
์๋ ํ์ธ์. ์ ๋ โ์๏ฟฝ๋ ์ด ๊ธ์ ์ ๋ค์ด๊ฐ ๊ฑฐ์์?โ๋ผ๋ ์ ๋ชฉ์ ๋ฐํ๋ฅผ ์งํํ ์ ํ์ฌ์ ๋๋ค. ๋ค์ด๋ฒ ์คํผ์ค์์ ์๋์ ์ฌ๋ผ์ด๋ ์ ํ์ ๋ง๋ค์๊ณ , ํ์ฌ๋ ์น๊ณผ์์ฌ ์ปค๋ฎค๋ํฐ๋ฅผ ์ด์ํ๋ ๋ฐ๋์ด์์ CTO๋ก ์๋ฃ์ธ๋ค์ ์ํ ํ๋ซํผ์ ๋ง๋ค๊ณ ์์ต๋๋ค.
์ด๋ฒ์๋ ์ฌ๋ฌ๋ถ๋ค์ด ์ธ์ ๊ฐ ํ ๋ฒ์ฏค์ ๋ง๋ ์ด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ณ , ๊ธฐ์ ๋ฉด์ ์์ ๋ฐํํ๊ฒ ๋์์ ๋ ์์ฃผ ๋ฐ์ด๋ ๋ต๋ณ์ ํ ์ ์๊ฒ ์์ฐฌ ๋ด์ฉ์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค. ์ ํ์ฉํ์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒ ๊ธ์์ ๋ค๋ฃจ๋ ๊ฒ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
- ์ ๋์ฝ๋ ์์ ์๋ Hangul Syllables ๊ตฌ์ฑ
- euc-kr/cp949์ ํ๊ธ ๋ฌธ์ ๊ตฌ์ฑ๊ณผ ํ๊ณ
- ์ํ ์์ utf-8, ucs-2
- ์กฐํฉํ ์์ฑํ ๊ธ์ ์ดํดํ๊ธฐ
- ํ๊ธ ํธ๋ฌ๋ธ ์ํ ๊ณผ ๊นจ์ง utf ๊ธ์์ ํด์ ์ฌ๋ก
์ ๋์ฝ๋
์ ๋์ฝ๋ ์ง์ฅ
์ด๋ฒ ๋ฐํ๋ ์๋ ์ฌ์ง์์ ์์๋์์ต๋๋ค. ๊ฐ์ด ํ๋ฒ ๋ณผ๊น์? ํจ๊ป ์ผํ๋ ๋งค๋์ ๋์ด ์ด๋ ๊ฒ ์ฌ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋์ต๋๋ค.
โํ ์คํธ ์๋ํฐ๋ฅผ ํตํด ๊ธ์ ์์ฑํ๋ ๋์ค์ ๊ธด ๊ธ์ ์์ฑํ๋ฉด ์ด์ํ ๋ฌผ์ํ ๊ธ์๊ฐ ์๊พธ ์๊ฒจ์.โ
โ์ด ๊ธ์๋ฅผ ์ง์ฐ๊ธฐ ์ํด ๊ธ์ ์์ ํ๊ณ ๋ค์ ์ ๋ก๋๋ฅผ ํ๋ฉด ๋ ๋ค๋ฅธ ๊ณณ์ ๋ํ๋์. ๊ผญ ๋๋์ง ๊ฐ์์!โ
์ด ๋ฉ์์ง๋ฅผ ๋ณด๋ธ ๋งค๋์ ๋์ ์ด๋ฐ ํ์์ ๋ณด๊ณ โ์ ๋์ฝ๋ ์ง์ฅโ์ด๋ผ๊ณ ํํํ์ต๋๋ค. ์ ์ด๋ฏธ์ง์ ์ค๋ฅธ์ชฝ ์๋๊ฐ ์ค์ ๋ก ๋งค๋์ ๋์ด ๊ฒช์ ๊นจ์ง ํ ์คํธ์ ๋ชจ์ต์ ๋๋ค. ์ด์ ์ด ๋ฌผ์ํ๊ฐ ์ ๋ฑ์ฅํ๋์ง ์์๋ณด๊ณ , ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ์ ์ ํจ๊ป ํด๋ณด๊ฒ ์ต๋๋ค.
์ ๋์ฝ๋๋?
๋จผ์ ์ ๋์ฝ๋์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ ๋์ฝ๋๋ ISO 10646์ด๋ผ๋ ํ์ค์ ๋๋ค. ๋ค์ ๋งํด ์ ๋์ฝ๋๋ ์ ์ธ๊ณ์ ์๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ํํํ๋ ์ผ๊ด๋ ํ์ค์ด์ ๋์์ ์ด๋ฌํ ๋ฌธ์๋ค์ ๊ด๋ฆฌํ๋ ๊ธฐ๊ตฌ๋ฅผ ๋งํฉ๋๋ค. ์ด ์ ๋์ฝ๋ ์์๋ ๋ช ๊ฐ์ง ํฐ ๋ฉ์ด๋ฆฌ๊ฐ ๋๋์ด ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์์ญ์ BMP ์์ญ์ด๋ผ๊ณ ํฉ๋๋ค. ์ด ์์ญ์๋ ๊ธฐ๋ณธ ์ธ์ด ํ๋ฉด์ด๋ผ๊ณ ๋ถ๋ฅด๋ ํ ์คํธ ์ ์ด ์์ต๋๋ค. ์ด ํ ์คํธ ์ ์์๋ U+0000~U+FFFF๋ผ๋ ํํ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ ๋์ฝ๋๋ฅผ ์ธ ๋ ๋ง์ด ์ฐ๋ ํํ ๋ฐฉ๋ฒ์ ๋๋ค. U+๋ค์ ๋์ค๋ 16์ง์ ์ซ์๋ค์ด ๋ณดํต ์ ๋์ฝ๋์์ ๋งํ๋ ์ซ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์ซ์๋ก๋ง ํํํ๋ฉด ์๋ฏธ๊ฐ ํท๊ฐ๋ฆฌ๊ธฐ ๋๋ฌธ์ U+๋ฅผ ๊ด์ต์ ์ผ๋ก ๋ถ์ธ๋ค๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ฒ์งธ ์์ญ์ธ SMP ์์ญ์ ๋ณด์ถฉ ์ธ์ด ํ๋ฉด์ด๋ผ๊ณ ํฉ๋๋ค. ์ด ์์ญ์๋ ์ฌ๋ฌ๋ถ๋ค์ด ์ฌ์ฉํ๋ ์ด๋ชจ์ง๋ ๊ธฐํธ๋ค์ด ํฌํจ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ธ ๋ฒ์งธ ์์ญ์ ํ์ ๋ฌธ์ ํ๋ฉด์ด๋ผ๊ณ ํ๊ณ ์ฃผ๋ก ํ์์ ๊ฐ์ ๋ฌธ์๋ค์ด ์ฌ๊ธฐ์ ํฌํจ๋ฉ๋๋ค.
์ ๊ทธ๋ฆผ์ ์ฒซ ๋ฒ์งธ ์์ญ์ธ ๊ธฐ๋ณธ ์ธ์ด ํ๋ฉด์ ๋๋ค. ๊ทธ๋ฆผ์ฒ๋ผ ๊ธฐ๋ณธ ์ธ์ด ํ๋ฉด์๋ ๋ค์ด์๋ ๊ธ์๋ค์ด ์ ๋ง ๋ง์ต๋๋ค. ํ ์นธ์๋ 256์ ์ ๋์ ํ ์คํธ๊ฐ ๋ค์ด๊ฐ ์ ์์ต๋๋ค. 00๋ถํฐ 02๊น์ง๋ ๋ก๋ง์๊ฐ ๋ค์ด๊ฐ ์๊ณ , ๋ก๋ง์๋ฅผ ๋์ด ํ๋์์ ์ ๋ฝ ๋ฌธ์ ๋ฑ์ ์ง๋, 34๋ฒ๋ถํฐ๋ CJK ๋ฌธ์๋ ๋ณผ ์ ์์ต๋๋ค. CJK๋ Chinese, Japanese, Korean์ ์ฝ์๋ก ์ธ ๋๋ผ์์ ์ฐ๋ ํ์๊ฐ ํฌํจ๋ ์นธ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ๋ฌธ์๋ ๋์์์ ๋ฌธ์ ์์ญ์ ๋ค์ด๊ฐ ์๊ณ , ๋นจ๊ฐ์์ผ๋ก ํ์๋์ด ์์ต๋๋ค. ๋นจ๊ฐ์์ผ๋ก ํ์๋ ๋์์์ ๋ฌธ์๋ 11๋ฒ, 30๋ฒ, 31๋ฒ์ ๋ค์ด๊ฐ ์๊ณ , A0๋ถํฐ D7์๋ ๋ค์ด๊ฐ ์์ต๋๋ค.
์ด BMP ์์ญ์ U+0000๋ถํฐ U+FFFF๊น์ง ์ด 4๊ฐ์ 16์ง๋ฒ ์ซ์๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ 2byte ํํ ๋ฒ์์ด๋ฉฐ, ์ด 65,536์์ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ ์์ต๋๋ค. ์ ๋์ฝ๋์์๋ ์ ์ธ๊ณ ๋๋ถ๋ถ์ ๋ฌธ์๊ฐ ์ด 65,000์ฌ ๊ฐ ๋ฒ์์ ํฌํจ๋๋ค๊ณ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
์ ๋์ฝ๋์์์ ํ๊ธ
๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ ํํํ๋ ํ๊ธ์ ์ ํํ ์ด๋๋ถํฐ ํฌํจ๋์ด ์์๊น์? ์์ ๋งํ ๊ฒ์ฒ๋ผ ๋์์์ ๋ฌธ์์ด์ ํฌํจ๋์ด ์๋๋ฐ, ๊ทธ์ค AC๋ก ์์ํ๋ ๋ถ๋ถ๋ถํฐ ํฌํจ๋์ด ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ ์ ๋์ฝ๋ ์์ ์๋ ํ๊ธ ๋ชฉ๋ก์ ์ผ๋ถ์ ๋๋ค.
โ๊ฐโ๋ถํฐ ์์ํด์ โํฃโ ๊น์ง ํํํ๋ โU+AC00โ๋ถํฐ โU+D7A3โ๊น์ง ์์ญ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ๊ธ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ํ๊ธ์ธ์ง ํ๋ณํ๊ธฐ ์ํด ์ฐ๋ ์ ๊ท ํํ์์ ์ฌ์ฉํ ๋ โ๊ฐโ๋ถํฐ โํฃ'๊น์ง๋ก ์ฐ๋ ๊ทธ ์์ญ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํํํ ๊ฒ์ด ๋ฐ๋ก ์ ๋์ฝ๋์์ ์ ์ํ๋ ํ๊ธ์ ๋๋ค.
๊ทธ๋ผ ์ด ์์ญ์ ํ๊ธ์ด ๋ช ๊ธ์๋ ๋ค์ด๊ฐ ์์๊น์? ๋จผ์ ์ด์ฑ 19์, ์ค์ฑ 21์, ์ข ์ฑ 27์์ ๋น์ด ์๋ ์ข ์ฑ 1์๊น์ง ํฌํจํ๊ณ , 19 X 21 X 28์ ํ๋ฉด 11,172์๊ฐ ๋ฉ๋๋ค. ์ด 11,172์๋ฅผ ๋ค ํํํ๋๋์ ๋ฐ๋ผ ์์ฑ๋ ํ๊ธ์ธ์ง ๋ถ๋ถ์ ์ผ๋ก ๋น ์ ธ์๋ ํ๊ธ์ธ์ง ํ๋ณํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํฌํจ๋์ง ์์ ํ๊ธ๋ ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด โ์๋ ์โ๋ฅผ ํฌํจํ ์ํ๊ธ, ์ด์ฑ์ด ์๋ ๊ธ์, ์ค์ฑ์ด ์๋ ๊ธ์ ๋ฑ์ ์ ๋์ฝ๋์ ํฌํจ๋์ด ์์ง ์์ต๋๋ค.
ํ๊ธ ์ ๋ ฌ ๊ธฐ์ค
ํ๊ธ ์ ๋ ฌ ๊ธฐ์ค์ ๋ํด์๋ ์์๋ณด๊ฒ ์ต๋๋ค. โ๊ฐ๋๋ค๋ผ๋ง๋ฐ์ฌโ๋ถํฐ โ์์์ฐจ์นดํํํโ๊น์ง, ์ด ์ ๋ ฌ ์์๊ฐ ์ ํด์ง์ง๋ ๊ทธ๋ ๊ฒ ์ค๋๋์ง ์์์ต๋๋ค. ์์์์ด ์ด๋์ ๋ค์ด๊ฐ์ง, ๊ฒน ๋ชจ์์ด ์ด๋์ ๋ค์ด๊ฐ์ง ๋ฑ์ ๋ํ ๋ ผ์๋ฅผ ๋ฐํ์ผ๋ก ํ๊ธ์ ์ ์ฐํํ๋ 1988๋ ๋ฌธ๊ต๋ถ ๊ณ ์๋ฅผ ํตํด ํ์ ์ด ๋์์ต๋๋ค. ๋น์ ํ์ ํ ๊ณ ์๋ฅผ ๋ฐํ์ผ๋ก ์ ๋์ฝ๋์๋ ๊ทธ ์์๊ฐ ๋ฐ์๋์์ต๋๋ค.
๋ช ๊ฐ์ง ์ฐ๊ตฌ๋ฅผ ๋ ์ฐพ์๋ณด๋ ์ด ์์์ ๋ํ ์ ์๊ฐ ๋ช ์ฐจ๋ก ์์๊ณ , 80๋ ๋ ์ด์ ์๋ ์์์์ด ๋ค์ ์๋ ๋ฑ์ ๋ค๋ฅธ ์์๋ฅผ ๊ฐ์ง ์ฌ์ ๋ค์ด ์ข ์ข ์์์ต๋๋ค. ์ด์ฒ๋ผ ๋ค์ํ ๋ ผ์๋ก ์ ํด์ง ์์๊ฐ KS X 1026-1์ด๋ผ๋ ํ์ค์ ๊ธฐ๋ก๋์ด ์์ต๋๋ค.
๊ทธ๋ผ ์ฌ๊ธฐ์ ์ ๊น ๋ถํ์ ํ๊ธ์ ์ด๋ค์ง ์ดํด๋ณผ๊น์? ๋ถํ์์ ์ฌ์ฉํ๋ ์ ๋ ฌ์ ์ฐ๋ฆฌ์ ์กฐ๊ธ ๋ค๋ฆ ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์์์์ด ๋ค์ ์ค๊ณ , ๋ชจ์ โใ โ๋ ๋งจ ๋ง์ง๋ง์ ์์นํด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ ์๋ ๊ฐ๋ฐ์๋ค์ด ํ๊ธ์ ํํํ๊ณ ๊ฐ๋ฐ์ ์ฌ์ฉํ ๋๋ ์ ๋์ฝ๋ ์์์ ์ผ์นํ์ง ์๋ ๊ตฌํ์ ์ง์ ํด์ผ ํฉ๋๋ค.
1999๋ ์ ๋ถํ์ด ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๊ต์ ํ ๊ฒ์ ์ ์ํ์ง๋ง, ์ ๋์ฝ๋ ์์ํ์์๋ ์ด๋ฅผ ๋ฐ์๋ค์ด์ง ์์์ต๋๋ค. ์ด๋ฏธ 88๋ ๋์ ํ๊ตญ์์ ํ๊ธ์ ๋ํ ์ ๋ ฌ์ ๋ฑ๋กํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ผ ์ ๋์ฝ๋์์ ํ๊ธ์ ์ผ๋ง๋ ํฐ ๋น์ค์ ์ฐจ์งํ ๊น์? ์์ ์ค๋ช ํ BMP ์์ญ์ 66,536์ ์ค์ 11,172์, ๋ฌด๋ ค 6๋ถ์ 1์ ์ฐจ์งํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์ ๋์ฝ๋์์๋ ์ด๋ ๊ฒ ๋ง์ ๊ธ์๋ฅผ ๋ชจ๋ ๋ฐ์์ค ๊ฒ์ธ์ง ๋ํ ๋ ผ์๋ ์์๋ค๊ณ ํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ๋ ผ์๋ฅผ ๊ฑฐ์ณ ์ผ๋ถ ๋น ์ง ๊ธ์๋ ์กด์ฌํ์ต๋๋ค.
๊ทธ ๋๋ฌธ์ ์ ๋์ฝ๋ 1.0 ์คํ์๋ ์ง๊ธ๋ณด๋ค ์ ์ ํ๊ธ์ด ๊ธฐ๋ก๋์์ต๋๋ค. 1996๋ ์ ๋์จ ์ ๋์ฝ๋ 2.0 ์คํ์ด ๋ผ์์ผ 11,172์์ ๋ชจ๋ ํ๊ธ์ด ๊ธฐ๋ก๋์์ต๋๋ค.
์กฐํฉํ ์ ๋์ฝ๋ Hangul Jamo
์กฐ๊ธ ๋ค๋ฅธ ํ๊ธ ํํ์ด ๋ ์์ต๋๋ค. ๋ฐ๋ก ์กฐํฉํ ์ ๋์ฝ๋์ธ Hangul Jamo์ ๋๋ค. ์ด ํํ์ ์ด์ฑ, ์ค์ฑ, ์ข ์ฑ์ ์กฐํฉํด์ ํ์ํ ์ ์์ต๋๋ค.
์ฒซ๊ฐ๋ ์ ๋์ฝ๋
โ์ฒซ๊ฐ๋โ ์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ ์ด ํํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ด๋ฆ์ โํ'์ ๋ง๋ค๋ ค๋ฉด โใ โ, โใ โ, โใดโ์ ์กฐํฉํด ํํํ ์ ์์ต๋๋ค. ์ด๋ฐ ์กฐํฉ์ผ๋ก 11,172์์ ํ๊ธ์ ๋ฌผ๋ก ์ด๊ณ , ์ํ๊ธ ๊ธ์๋ ํ๋์ ๊ธ์๋ก ํํํ ์ ์์ต๋๋ค. (๋ฌผ๋ก ์ํ๊ธ์ ๋ชจ๋ ๊ตฌํํ๋ ค๋ฉด ์ด๋ฐ ๊ฒ์ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ํฐํธ๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค.)
์๋ ๊ทธ๋ฆผ์ ์กฐํฉํ ํ ์คํธ์ ์์ธ ์ฌ๋ก๋ฅผ ๋ณด์ฌ์ค๋๋ค. โtโ๋ผ๋ ๋ณ์์ โํ์ฌ๋ ๋ฐํ์ค!โ์ด๋ผ๋ ๊ฐ์ ์ ์ฅํ์ต๋๋ค. ์ด ๋ณ์์ substring์ ํ์ฉํด 2๊ฐ์ ๊ธ์๋ง ๊ฐ์ ธ์ฌ ๋, ์ฐ๋ฆฌ๋ โํ์ฌโ๋ผ๋ ๊ธ์๊ฐ ๋์ค๊ธฐ๋ฅผ ๊ธฐ๋ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก โํโ๋ผ๋ ๊ธ์๊ฐ ํํ๋์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ ๋์ฝ๋์ ์กฐํฉํ ํ ์คํธ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ํตํด ์ด์ฑ, ์ค์ฑ, ์ข ์ฑ ์์ผ๋ก ๋๋ํ ๋์ดํด์ ํํํฉ๋๋ค. ์ด ๋์ด์์ 2๋ฒ์งธ ๊ธ์๊น์ง ๊ฐ์ ธ์๊ธฐ ๋๋ฌธ์ โํโ๋ผ๋ ๊ธ์๊ฐ ํํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ ์ฃผ๋ณ์ ์ฒซ๊ฐ๋ ์ ๋์ฝ๋
์ด๋ฐ ์กฐํฉํ ํ ์คํธ์ธ ์ฒซ๊ฐ๋ ์ ๋์ฝ๋๋ ์ฐ๋ฆฌ ์ฃผ๋ณ์์ ์ข ์ข ๋ณผ ์ ์๋๋ฐ, ๋งฅ์์ ์์ฑํ ํ์ผ์ ์๋ก ๋ค ์ ์์ต๋๋ค.
๋งฅ์์ ์์ฑํ ํ๊ธ ํ์ผ์ ์๋์ฐ์์ ์ด๋ฉด ์ด๋ ๊ฒ ๋ณด์ ๋๋ค. ๊ทธ๋ฆผ์ ํ์ผ๋ช ์ ๋ชจ์์ ์ฝ์ด๋ณด๋ฉด โ๊ฐ๋ฐ์_๋งค๋ด์ผโ์ ๋๋ค. ๋งฅ OS์์๋ ์ฒซ๊ฐ๋ ์ ๋์ฝ๋๋ฅผ ์ง์ํ๊ณ ์ ์ฅํ ๋๋ ์ด ํ ์คํธ ๋ฐฉ์์ผ๋ก ์ ์ฅํ์ง๋ง, ์๋์ฐ OS์์๋ ์ด๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ํ๋์ ๊ธ์๋ก ์ธ์ํ์ง ๋ชปํ๊ณ ํ๋ํ๋ ์ชผ๊ฐ์ ธ ํํ๋๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ์์๋ ์ฒซ๊ฐ๋ ์ ๋์ฝ๋๋ฅผ ์ ์ง์ํ ๊น์? ๋คํํ๋ ๋๋ถ๋ถ์ ํ๋ ๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ฅผ ์ ์ง์ํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ก ์ธํด ์๊ธฐ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์์๋ ์ ํํ๋๋ ํ๊ธ์ด ์๋์ฐ OS์ ๋ค์ด๋ก๋ํ์ฌ ํ์ธํ๋ฉด ๊นจ์ ธ์๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ฒซ๊ฐ๋ ์ ๋์ฝ๋ ์ ๋ ฅํ๊ธฐ: ์ธ๋ฒ์ ํค๋ณด๋
์ฒซ๊ฐ๋ ์ ๋์ฝ๋์ ํน์ฑ์ ๋ณด๋ฉด, ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด์ฑ์ ์ค๋ ๊ธ์์ ์ข ์ฑ์ ์ค๋ ๊ธ์๊ฐ ๊ฐ๋๋ผ๋ ์ค์ ๋ก๋ ๋ค๋ฅธ ๊ธ์๋ก ์ทจ๊ธํฉ๋๋ค.
๋ฌผ๋ก ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ ํค๋ณด๋์์๋ ์ด์ฑ๊ณผ ์ข ์ฑ์ ๋ถ๋ฆฌํด์ ์ ๋ ฅํ ์๋ ์์ต๋๋ค. ๋์ ์ด์ฑ๊ณผ ์ข ์ฑ์ ๋ถ๋ฆฌํด์ ์ ๋ ฅํ ์ ์๋ ํค๋ณด๋๊ฐ ์์ต๋๋ค. ๋ฐ๋ก ์ธ๋ฒ์ ํค๋ณด๋์ ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ธ๋ฒ์ ํค๋ณด๋์์๋ ์ด์ฑ, ์ค์ฑ, ์ข ์ฑ์ ๋๋ ์ ์ ๋ ฅํ ์๊ฐ ์์ต๋๋ค.
๊ฐํน ์ฃผ๋ณ์์ ์ธ๋ฒ์ ํค๋ณด๋๊ฐ ์ข๋ค๊ณ ๋งํ๋ ๋ถ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ถ๋ค์ ๋น ๋ฅธ ํ์ดํ์ ์ํด ์ธ๋ฒ์ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ ๋๋ฒ์ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ข ์ข ์๋์ ๊ฐ์ ์คํ๊ฐ ๋ฐ์ํ๊ณค ํฉ๋๋ค. โ์ท์ด ์์ด์โ๋ผ๋ ๊ธ์๋ฅผ ์ ์ผ๋ ค ํ๋๋ฐ, ๊ธํ๊ฒ ์ ๋ ฅํ๋ค ๋ณด๋ โ์ท์ด ใ ๋ฒ์ด์โ๋ก ์ ๋ ฅ๋๋ ๊ฒ์ ๋๋ค. ๋๋ฒ์ ํค๋ณด๋๋ ์ด์ฑ๊ณผ ์ข ์ฑ์ ๋ํ ๊ตฌ๋ถ์ด ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ๊ธ์๋ฅผ ์ ๋ ฅํ๋ ์๊ฐ์ ๋ฐ๋ผ ์ด์ฑ์ธ์ง ์ข ์ฑ์ธ์ง๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ๊ทธ๋์ ์ด๋ฐ ์คํ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ ๋์๋ ๊ฐ์ ๊ธ์๋ก ๋ณด์ด๋๋ผ๋, ์ธ๋ฒ์ ํค๋ณด๋์์๋ ์ด์ฑ๊ณผ ์ข ์ฑ์ ๋ค๋ฅธ ๊ธ์๋ก ์ทจ๊ธํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๊ธฐ๋ ๋ ํนํ ์ฅ์ ์ด์ ๊ธฐ๋ฒ๋ ์์ต๋๋ค. ๋ฐ๋ก ์ธ๋ฒ์ ๋ชจ์์น๊ธฐ์ ๋๋ค. โ์โ์ด๋ผ๋ ๊ธ์๋ฅผ ์ ๋ ฅํ ๋, ์ธ๋ฒ์ ํค๋ณด๋๋ ์ด์ฑ๊ณผ ์ข ์ฑ์ ์ฐจ์ด๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์ โใ โ โ โใดโ โ โใ โ โ โใ โ ์์๋ก ์ ๋ ฅํด๋ ๊ธ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฆ, ์ข ์ฑ์ ๋จผ์ ์ ๋ ฅํ๋ , ๋์๋ฆฌ๋ฅผ ๋จผ์ ์ ๋ ฅํ๋ ๋ฌธ์ ์์ด ๊ธ์๋ฅผ ํํํ ์ ์์ต๋๋ค.
๊ฒฐํฉ ๋ฐฉ๋ฒ: NFC / NFD
๋ฌผ๋ก ์ง๊ธ๊น์ง ์ค๋ช ํ ์ฒซ๊ฐ๋์ ์ดํดํ๊ธฐ๋ ์ฝ์ง ์์ผ๋ฉฐ, ์ด๋ป๊ฒ ๊ฒฐํฉํ๊ณ ์ฌ์ฉํด์ผ ํ ์ง๋ ๋ ์ด๋ ค์ด ๊ฒ ์ฌ์ค์ ๋๋ค. ์ด๋ฐ ์ด๋ ค์์ ํด์ํ๊ธฐ ์ํด ์ ๋์ฝ๋์์ ์๊ฐํ๋ ๊ฒฐํฉ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฐ๋ก NFC(Normalization Form Canonical Composition, ์ ์ค ๊ฒฐํฉ)์ NFD(Normalization Form Canonical Decomposition, ์ ์ค ๋ถํด)์ ๋๋ค.
์ ์ค์ ์ฌ์ ์ ๋ป์ โ๋ฐ๋ฅธ ํโ์ ๋๋ค. ์ ๋์ฝ๋์์๋ ์ ์ค ๊ฒฐํฉ๊ณผ ์ ์ค ๋ถํด๋ฅผ ์๊ฐํ๋ฉฐ, โ์ด ๊ท์น์ ํตํด ์ฌ๋ฐ๋ฅด๊ฒ ๊ฒฐํฉํ๊ณ ๋ถํดํ์ฌ ์ฌ์ฉํ๋ผโ๊ณ ๋งํฉ๋๋ค.
์ ์์ ์ โ(ใฑ)โ์ ์ ์ค ๋ถํด๋ฅผ ํตํด โ(โ, โใฑโ, โ)โ ์ธ ๊ฐ์ ๋ฌธ์๋ก ๋ถํดํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์ ๋ฐ๋๋ก ์ ์ค ๊ฒฐํฉ์ ํตํด โ(ใฑ)โ ํ ๊ธ์๋ก ๊ฒฐํฉํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก โํโ์ด๋ผ๋ ๊ธ์๋ ์ ์ค ๊ฒฐํฉ๊ณผ ์ ์ค ๋ถํด๋ฅผ ํตํด ๋ถํด์ ๊ฒฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ ๊ท์น์ ์๋ฐ์คํฌ๋ฆฝํธ์ String, normalize ํ๋กํ ํ์ ์ ์ ์๋์ด ์์ผ๋ ๋งํฌ๋ฅผ ํ์ธํ์ฌ ๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๊ธ ํธํ ์๋ชจ Hangul Compatibility Jamo
๋ง์ง๋ง์ผ๋ก ์์๋ณผ ๊ฒ์ ํ๊ธ ํธํ ์๋ชจ์ ๋๋ค. ์ด๋ฒ ๊ธ์์ ๋ฑ์ฅํ๋ ์ธ ๋ฒ์งธ ํ๊ธ์ ๋๋ค.
ํ๊ธ ํธํ ์๋ชจ๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ ๋๋ฒ์ ํค๋ณด๋์์ ์ฌ์ฉํ๋ ํ๊ธ์ ๋๋ค. ์ฒซ๊ฐ๋ ํ๊ธฐ์์ ์ฐจ์ด์ ์ ์ด์ฑ๊ณผ ์ข ์ฑ์ ์ฐจ์ด๊ฐ ์๋ค๋ ์ ์ ๋๋ค. ์ฌ๋ฌ๋ถ๋ค์ด ๋๋ฒ์ ํค๋ณด๋๋ฅผ ์ฌ์ฉํ์ฌ โใฑโ์ ์ ๋ ฅํ๋ฉด โํ๊ธ ํธํ ์๋ชจ์ 313๋ฒ์ ์๋คโ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ง๊ธ๊น์ง ์ ๋์ฝ๋, ๋ ์ ๋์ฝ๋์์์ ํ๊ธ์ ๋ํด ์์๋ดค์ต๋๋ค.
์ฌํ ์์๋ณธ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๋ค์ ๊ธ์์๋ ์๋์์ ๋งํ ๋ฌผ์ํ๊ฐ ์ ๋ฑ์ฅํ๋์ง, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ง๋ ๊ธ์์ ์ ๋์ฝ๋์ ๋ํ ์ค๋ช ๊ณผ ์ ๋์ฝ๋์์์ ํ๊ธ์ ๋ํด ์์๋ดค์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ ์ด์ํ ๋ฌผ์ํ๊ฐ ์ ๋ฑ์ฅํ๋์ง ์์๋ณด๊ณ , ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
๋ฌธ์ ๋ถ์ - ๏ฟฝ๊ฐ ๋ค์ด๊ฐ๋ ์ด์ *
๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ ์ ์๋ ๋ฌผ์ํ๊ฐ ๋ค์ด๊ฐ๋ ์ด์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์๋์ฐ๊ฐ ๋ฌธ์ ์ธ๊ฐ?: โeuc-krโ
๋จผ์ โ์๋์ฐ์ ์ธ์ฝ๋ฉ ๋ฐฉ์ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ๊ฐโ๋ผ๋ ๊ฐ์ ์ ๋๊ณ ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋์ฐ๋ UTF-8์ด ์๋๋ผ euc-kr์ด๋ผ๋ ์ธ์ฝ๋ฉ์ ์ฃผ๋ก ์ฌ์ฉํด์ ๋ฌธ์๋ฅผ ์ ์ฅํฉ๋๋ค. ํ์ค๋ช ์ผ๋ก๋ KS X 1001์ด๊ณ , ์๋ ์ด๋ฆ์ผ๋ก๋ KSC 5601-1987์ ๋๋ค. ์ด ํ์ค์์ ํ๊ธ๊ณผ ํ์๋ฅผ ๋ฐฐ์นํ๊ณ ์์ต๋๋ค. 87๋ ์คํ์ ๋ฐฐ์น๋ ํ๊ธ์ 2,350์๋ง ํฌํจํฉ๋๋ค. ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ํ๊ธ์ ์ถ๋ ค์ ๋ฐฐ์นํ ๊ฒ์ธ๋ฐ, ์ ์ฒด๊ฐ 11,172์์ธ ๊ฒ์ ์๊ฐํ๋ฉด 20% ์์ค์ ๋ถ๊ณผํ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ๋น ์ง ๊ธ์๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ํ๊ธ์ ํ๊ธฐํ ๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ธ์ฝ๋ฉ vs ๋ฌธ์ํ
์ฌ๋ฌ ๋ฌธ์ ์ ์ ๋ํด ์์๋ณด๊ธฐ ์ ์, ์ธ์ฝ๋ฉ๊ณผ ๋ฌธ์ํ์ ์ฐจ์ด์ ๋ํด ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋ฌธ์ํ๋ ๊ธ์ ํ๋๊ฐ ์ด๋ค ์ซ์์ ๋์ํ๋์ง ํ๊ธฐํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ ๋์ฝ๋๋ ์ด๋ค ๋ฌธ์๊ฐ ์ด๋ค ์ซ์์ ๋์ํ๋ค๋ ๊ฒ์ ์ค๋ช ํ๊ธฐ ์ํ ๋ฌธ์์ ๋๋ค. ํํธ ์ธ์ฝ๋ฉ์ด๋ ์์ ๋งํ ๊ฒ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ์กํ ๋ ํํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐํน ์ธ์ฝ๋ฉ๊ณผ ๋ฌธ์ํ๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ์ค๋ช ํ๊ธฐ๋ ํ๋๋ฐ, ๋ง์ ๋ฌธ์ํ๋ ๊ทธ ์์ฒด๊ฐ ์ธ์ฝ๋ฉ์ผ๋ก ๋์ํ๋ ๊ฒฝ์ฐ๋ ๋ง์ต๋๋ค. euc-kr ๋ํ ํ๊ธ์ ์ซ์๋ก ๋์ฒดํ๋ ํํ์ด ์์ผ๋ฉฐ ๊ทธ ์ซ์ ๊ทธ๋๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ๊ทธ ์์ฒด๋ก ๋ฌธ์ํ์ด๋ฉด์ ๋ ํํธ์ผ๋ก ์ธ์ฝ๋ฉ์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
์ธ์ฝ๋ฉ์ ๋ํ์ ์ธ ์๋ UTF-8, ๋ฌธ์ํ์ ๋ํ์ ์ธ ์๋ ์ ๋์ฝ๋๋ผ๊ณ ํ ์ ์์ต๋๋ค.
ํ๊ธ ์ฝ๋ ํ์คํ๋ก ์ธํ ๋ฌธ์ ๋ฐ์: KSC-5601 / euc-kr
์์ ์ค๋ช ํ 2,350์์ ํ๊ธ ์ฝ๋๊ฐ ๋จผ์ ํ์คํ๋ก ์ฐ์ด๋ฉฐ ๋น์ ์ ์ฐ๋ง์์ ๋๋ถ๋ถ์ ํ๊ธ์ด ์ด ํ์ค ๊ธฐ๋ฐ์ผ๋ก ํํ๋๊ธฐ ์์ํ์ต๋๋ค. ๊ณง ์ด๋ก ์ธํ ๋ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
โ์์ค๋ฏโ๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋ถ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋ํ์ ์ ๋๋ค. โ๋ฏโ๋ผ๋ ๊ธ์๊ฐ euc-kr ๋ฒ์์ ํฌํจ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๋ถ์ ์ธํฐ๋ท ํ๊ฒฝ์ ๋ฌผ๋ก ์ํ์์ ๊ณ์ข๋ฅผ ๊ฐ์คํ ๋๋, ์๋ฅ ์์์ ์ด๋ฆ์ ์์ฑํ ๋๋ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค๊ณ ํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ฌ๋ฐ๋ ์ฌ๋ก๋ โํ๊ธ 815โ๋ผ๋ ์๋ํฐ ํด์ ๋๋ค. euc-kr์๋ โ์ฉโ์ด๋ผ๋ ๊ธ์๋ ์์ง๋ง, โ์โ๋ผ๋ ๊ธ์๊ฐ ์์ต๋๋ค. ๊ทธ ๋๋ฌธ์ ๋น์ ๋ค๋ฅธ ์๋ํฐ์๋ โใ โ๊ณผ โใ โ๋ฅผ ํ์ดํํ ์งํ ๋ฌธ์๋ฅผ ํํํ ๋ฐฉ๋ฒ์ด ์์ด ํ์ดํ์ด ๋์ด๊ฐ์ง ์๋ ๋ฒ๊ทธ๊ฐ ์์์ต๋๋ค. ๊ทธ๋์ ํ๊ธ 815 ์๋ํฐ ๊ด๊ณ ์์ โ์ฉโ์ด๋ผ๋ ๊ธ์๋ฅผ ํํํ ์ ์๋ค๊ณ ์๋ํ๊ธฐ๋ ํ์ต๋๋ค.
cp949
์ด๋ฌํ euc-kr์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ cp949๋ผ๋ ๋ฌธ์ ์ ์ด ์์ต๋๋ค. euc-kr์ 2,350์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๊ธ์๊น์ง ํฌํจ์ํจ ๋ฌธ์ ์ ์ ๋๋ค. ๋ค๋ง ์ด cp949๋ ๊ณต์ ์ด๋ฆ์ ์๋๋๋ค. HTML์์๋ euc-kr๋ก ํ๊ธฐํ๋๋ก ๋์ด ์์ฃ . ๋ค๋ง ๋๋ถ๋ถ์ ๋จธ์ ์์ cp949๋ก ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
cp949๋ 2,350์์ ์์น๋ฅผ ์ ์งํ๋ฉฐ ๋๋จธ์ง ๊ธ์๋ฅผ ๋ผ์ ๋ฃ์ ๋ฐฉ์์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋๋ค ์ ๋ ฌ ์์๊ฐ ๋ง์ง ์์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ ธ๋์์ผ๋ก ํ์๋์ด ์๋ ์๋ถ๋ถ์ ๊ธฐํธ๋ ์ซ์, ํน์ ์ํ๋ฒณ์ ๋๋ค. ๊ทธ ๋ค์ ์๋ KS Xย 1001์ด ์ต์ด์ 2,350์์ ๋๋ค. ๋๋จธ์ง ๊ธ์๋ค์ ์ ๋ณด๋ผ์ ์์ญ์ ๋ผ์ ๋ฃ์ ํํ์ ๋๋ค. ๊ทธ๋ฌ๋ค ๋ณด๋ย cp949์ ์๋ ๋ฌธ์์ด๋ค์ ๊ฐ๋๋ค ์์๋๋ก ์ ๋ ฌํ๋ ค๋ฉด ๋ณ๋๋ก ์์๋ฅผ ๋ง์ถ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
๊ทธ๋์ euc-kr ๋ฌธ์์ ์ธ์ฝ๋ฉ์ด ๊นจ์ง๊ฑฐ๋ ์๋ชป ์ฒ๋ฆฌํ ๊ฒฝ์ฐ์๋ ๋ฌผ์ํ, ๋๋ ์ฝ๊ธฐ ์ด๋ ค์ด ์ด์ํ ํ๊ธ๋ก ๊นจ์ ธ์ ๋์ค๊ฒ ๋ฉ๋๋ค.
HTML์์์ euc-kr
euc-kr๋ก ์ด๋ฃจ์ด์ง ํ์ด์ง๋ ๋ณดํต cp949๋ก ํํํฉ๋๋ค. ๋ค๋ง ์ค์ ๋ฉํํ๊ทธ์๋ ์๋์ ๊ฐ์ด euc-kr๋ก ์ ์ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ์๋ฌธ์ ์ด ํ๋ ์๊ธธ ์ ์์ต๋๋ค. euc-kr ํ์ด์ง DOM์ textContent๋ฅผ ์ฝ์ผ๋ฉด ์ค์ ๋ก euc-kr๋ก ์ฒ๋ฆฌ๊ฐ ๋ ๊น์?
์ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ , ๊ทธ์ ์์ UTF-8์ ์์๋ณด๊ฒ ์ต๋๋ค.
UTF-8
UTF-8์ 1992๋ ์ ๊ณ ์๋์์ต๋๋ค. ์ ๋์ฝ๋๋ 91๋ , ํ๊ธ ํ์ค์ด 87๋ ๋์์ผ๋, ๋น๊ต์ ์ต์ ๊ธฐ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. UTF-8์ ๊ฐ๋ณ ๊ธธ์ด๋ก ํ ์คํธ๋ฅผ ํํํ๊ณ , ASCII ์ฝ๋ ์์ญ์ธ 1๋ฐ์ดํธ ์์ญ๋ถํฐ ๋ณดํต 3๋ฐ์ดํธ, BMP ์์ญ๊น์ง ํํํฉ๋๋ค. ๊ทธ๋์ ํ๊ธ์ UTF-8๋ก ํํํ๋ฉด ๋ณดํต 3๋ฐ์ดํธ ์ดํ๋ก ํํ๋ฉ๋๋ค. ์ด๋ชจ์ง๋ 4๋ฐ์ดํธ๋ก ํํ๋ฉ๋๋ค.
Note
์ฐธ๊ณ ๋ก utf-8์ ๋ฌผ๋ฆฌ์ ์ผ๋ก 5๋ฐ์ดํธ, 6๋ฐ์ดํธ๊น์ง ํํํ ์ ์์ง๋ง, 2003๋ ๊ฐ์ ์์ 5๋ฐ์ดํธ ์ด์์ ์ฌ์ฉํ์ง ์๊ฒ ๋ค๊ณ ์ ์ธํ์ต๋๋ค.
::
์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ฌธ์์ด
๊ทธ๋ ๋ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฌธ์์ด์ ์ด๋ป๊ฒ ํํํ ๊น์? ์๋ฐ์คํฌ๋ฆฝํธ๋ UCS-2์ UTF-16์ ์ฃผ๋ก ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์ฒ๋ฆฌํฉ๋๋ค. UCS-2๋, 2๋ฐ์ดํธ๋ก ํ๋์ ์ ๋์ฝ๋๋ฅผ ํํํ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ค๋ง UCS-2๋ BMP ์์ญ๊น์ง๋ง ํํํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ข ๋ ๊ธด ์์ญ์ ํํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก UTF-16์ ์ฌ์ฉํฉ๋๋ค. UTF-16์ UCS-2ํ๊ธฐ๋ฅผ ๊ทธ๋๋ก ์ค์ฉํ๋, ์ด๋ชจ์ง์ ๊ฐ์ ๋ ๊ธด ์์ญ์ 4๋ฐ์ดํธ๋ก ํ์ฅํด์ ํํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
UTF-8๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ฌธ์์ด ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํ ์ดํด๋ฅผ ๋ฐํ์ผ๋ก ์์ ๊ถ๊ธ์ฆ์ ํด๊ฒฐํ๊ฒ ์ต๋๋ค.
euc-kr ๋ฌธ์๋ฅผ ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์์ ์ ์ฅํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์๋ฐ์คํฌ๋ฆฝํธ์์๋ UCS-2๋ก ๋ณํ๋์ด ์ ์ฅ๋ฉ๋๋ค. ์ฆ, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ์ธ์ฝ๋ฉ๋ ๋ฌธ์๋ฅผ ์ฝ์ง๋ง, ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํ ๋๋ UTF-16์ผ๋ก ๋ฐ๊ฟ์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ง์ ์น ๋ฌธ์๊ฐ UTF-8๋ก ์ธ์ฝ๋ฉํ๋๋ฐ, ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ UTF-16์ผ๋ก ๊ตฌํ๋์์๊น์? UTF-8์ ์ํ๋ฒณ์ด๋ ๊ธฐํธ, ASCII ์ฝ๋๋ค์ 1๋ฐ์ดํธ์ ํ๊ธฐ๋ฅผ ํ๊ธฐ์ ์์ถํด์ ํํํ ์ ์์ผ๋ฉฐ, ํ๊ธ์ด๋ ๋ค๋ฅธ ๊ธฐํธ๋ค์ 2๋ฐ์ดํธ, 3๋ฐ์ดํธ๋ก ์ด์ด์ ํ๊ธฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ UTF-8์ ์ ์ก์ ์ ๋ฆฌํ ํ๊ธฐ๋ฒ์ ๋๋ค.
๋ค๋ง, ๊ทธ๋ฐ ์ฅ์ ๋๋น ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ค ๊ธธ์ด์ ๋ฌธ์์ด๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ชจ๋ ๊ธธ์ด๋ฅผ UTF-16 ํน์ UCS-2๋ก ํ๊ธฐํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ป๊ฒ ๊ธธ์ด๋ฅผ ํํํ ๊น์? ์๋ ๊ทธ๋ฆผ์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ณด๋ฉด, ๊ฐ๋ก ๋ง๋ 3๊ฐ๋ก ์ด๋ฃจ์ด์ง ํน์๋ฌธ์๋ UTF-16 ๋ฌธ์ 2๊ฐ๋ก ํํ๋ฉ๋๋ค. ์ค๋ฆฌ ์ด๋ชจ์ง ๊ฐ์ ๊ฒฝ์ฐ๋ 1F986 ์์ญ ์ฆ, BMP ์์ญ์ ๋ฒ์ด๋ฌ๊ธฐ ๋๋ฌธ์ ๊ธธ์ด๊ฐ 2์ ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฐ์กฑ ์ด๋ชจ์ง๋ 4๋ช ์ ์ฌ๋ ์ด๋ชจ์ง์ ์ฐ๊ฒฐ ๊ธ์๋ฅผ ํฌํจํด์ ๊ธธ์ด๊ฐ 11์ด ๋ฉ๋๋ค.
์์ UCS-2๋ฅผ ์ค๋ช ํ ๋, ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๋ฌธ์์ด์ 2๋ฐ์ดํธ๋ก ์ฒ๋ฆฌํ๋ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์์ ํน์ ๋ฌธ์๋ฅผ ํ์ธํ๋ charAt์ ๋ฌด์กฐ๊ฑด 2๋ฐ์ดํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
์ค๋ฆฌ ์ด๋ชจ์ง์ charAt(0)์ ์ ์ฉํ๋ฉด, โD83Eโ๋ผ๊ณ ํ๋ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ฉด ์ ๋์ฝ๋๋ฅผ ๊ตฌํ๊ธฐ ์ํด codePointAt์ ์ฌ์ฉํ๋ฉด โ1F986โ๋ผ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๏ฟฝ๋ ๋ญ๊น?
์ง๊ธ๊น์ง euc-kr๊ณผ UTF, ์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ฌธ์์ด ํํ๊น์ง ์์๋ดค์ต๋๋ค. ์ฌ์ค ์ด ๋ฌธ์ ๋ ์๋์ฐ์์ euc-kr๋ฅผ ์ฌ์ฉํด ์๊ธด ๋ฌธ์ ๋ง์ ์๋๋๋ค. ๋งฅ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
U+FFFD
๋ค์ ๋ฌผ์ํ ํน์๋ฌธ์ ๊ทธ ์์ฒด์ ๋ํด ์์๋ณผ ํ์๊ฐ ์์ต๋๋ค. ์ ๋์ฝ๋ ์คํ์์ ์ด ๋ฌผ์ํ ๋ฌธ์๋ฅผ ์ฐพ์๋ณด๋ โU+FFFDโ๋ผ๋ BMP ์์ญ์ ๋์๋ฝ์ ๊ธฐ๋ก๋ ๋ฌธ์๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ ๋์ฝ๋ ์คํ์์ ์ด ๋ฌธ์๋ ์ ๋์ฝ๋๋ก ํํ์ด ๋ถ๊ฐ๋ฅํ ๋ฌธ์๋ผ๊ณ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ๋ ์์ธํ, ์ ๋์ฝ๋ ์คํ 3.0์ ์ดํด๋ณด๋ ์๋์ ๊ฐ์ ์ค๋ช ์ด ์์ต๋๋ค. โU+FFFDโ๋ผ๋ ๋ฌธ์, UTF๋ก ํด์ํ ์ ์๋ ๊ฐ์ ๋ํด ์ถ์ฒํ๋ 3๊ฐ์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ฌ๋ฅผ ๋ฐํํ๊ฑฐ๋, ํด๋น ์ฝ๋๋ฅผ ์ง์ฐ๊ฑฐ๋, U+FFFD ๋ง์ปค๋ฅผ ๋ฃ์ด UTF ๊ธ์๊ฐ ๊นจ์ก๋ค๋ ๊ฒ์ ํ๊ธฐํ๋ผ๋ ๊ฒ์ ๋๋ค.
๋๋์ด ๋ฌผ์ํ ๊ธ์๊ฐ ์๊ธฐ๋ ์์ธ์ ์์์ต๋๋ค. โUTF ์์์ ๊ธ์๊ฐ ๊นจ์ก๊ธฐ ๋๋ฌธโ์ ๋๋ค. ์ด ํํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํ์ธํด ๋ดค์ต๋๋ค.
๋ฌธ์ ํด๊ฒฐํ๊ธฐ
์๋ํฐ์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ธ์ง ์ดํด๋ณด๋ http ์๋ต์์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. DB์๋ U+FFFD๋ผ๋ ํํ์ด ์ ์ฅ๋์ด ์์ผ๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ๋ ํ์ธํ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ฐฑ์๋ ์ฝ๋์์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋์ง ์ดํด๋ณด์์ต๋๋ค. ๊ณง UTF-8 ๋ฌธ์๋ฅผ 1000 ๋ฐ์ดํธ ๋จ์ chunk๋ก ๋๋ ์ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
3๋ฐ์ดํธ์ธ UTF-8 ํ๊ธ ๋ฌธ์๋ฅผ ์ด ์ฝ๋๋ก ์ฒ๋ฆฌํ๋ค ๋ณด๋ ์ค๊ฐ์ ๊นจ์ง๋ ๋ฌธ์๊ฐ ์๊ฒผ์ต๋๋ค. ๋ค์ chunk์ toString์ ์คํํ๋ ๊ณผ์ ์์ U+FFFD๊ฐ ์๊ธด ๊ฒ์ ๋๋ค.
๋ฌธ์ ๋ฅผ ์๋ ค์ค ๋งค๋์ ๋์ ๋ง์ ๋ค์ด๋ณด๋ ํญ์ ํ๊ธ์์๋ง ๊ธ์๊ฐ ๊นจ์ง๋ค๊ณ ํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, ์ด ๋ฌธ์ ๊ฐ ๋ง๋ค๋ ํ์ ์ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค.
์์ ๊ฐ์ ๋ฌธ์ ์ ์ ํ์ธํ๊ณ chunk๋ฅผ ์ชผ๊ฐ๋ ๊ณผ์ ์์ ๋ฌธ์๊ฐ ๊นจ์ง์ง ์๋๋ก ๋ฐฑ์๋ ๋ก์ง์ ์์ ํ๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ๋ฌผ์ํ ๋ฌธ์๊ฐ ์๊ธฐ๋ ์ด์ ๋ฅผ ์๊ธฐ ์ํด ์ ๋์ฝ๋์ ๋ํด ์์๋ณด๊ณ , ํ๊ธ ๋ฌธ์ ๊ตฌ์ฑ๋ ํ์ธํ๊ณ , euc-kr๊ณผ ํจ๊ป UTF๊น์ง ์์๋ดค์ต๋๋ค. ์ด ๊ณผ์ ์ ๊ฑฐ์ณ ์ ๋์ฝ๋์ U+FFFD๋ผ๋ ์คํ๊น์ง ์ฐพ์๋๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.
์ด๋ฒ ๊ธ๋ก ํ๊ธ์ด ์ด๋ค ์์ผ๋ก ์ ์ฅ์ด ๋๊ณ , ๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ค ์์ผ๋ก ํํ๋๋์ง ๊ธฐ์ตํด ์ฃผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๋ ์ ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณผ์ ์ ํํธ ์ผ์ ๋ฐฑ์๋ ์ธ์ฝ๋ฉ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง๋ ์์๋์ง ์ดํด๋ณด๋ฉด, ๋น์ทํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ผ ์๊ฐํฉ๋๋ค.
โ์๏ฟฝ๋ ์ด ๊ธ์ ์ ๋ค์ด๊ฐ ๊ฑฐ์์? (๋ถ์ : ์์๋๋ฉด ๊ฐ๋ ์ธ๋ชจ ์๋ ํ๊ธ ์ ๋์ฝ๋ ์์ ์ ๋ณต)โ (์ ํ์ฌ ๋ฐ๋์ด CTO) โฉ๏ธ