-
Notifications
You must be signed in to change notification settings - Fork 0
about_unicode
์ปดํจํฐ๋ก ๋ฌธ์๋ฅผ ํํํ๊ธฐ ์ํด์ ๋ฌธ์์งํฉ(character set)์ ์ ์ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ์งํฉ์ ์ฝ๋ ํํ(2์ง์)๋ก ํ๊ธฐํ ๊ฒ์ ์ฝ๋ํ๋ ๋ฌธ์ ์งํฉ(Coded Character Set)์ด๋ผ๊ณ ํ๋ค. ๋ฌธ์ ์งํฉ์ ์ปดํจํฐ์ ์ ์ฅํ๊ธฐ ์ํด ๋ฐ์ดํธ(Byte)ํํ๋ก ํํํ ๊ฒ์ encoding(๋ถํธํ) ๋ฐฉ์(CES, character encoding scheme)์ผ๋ก ๋ถ๋ ค์ง๊ณ ์๋ค.
๊ฐ์ฅ ๋ํ์ ์ผ๋ก ASCII(American Standard Code for Information Interchange)๊ฐ ์๋ค. 0x00 ~ 0X7F๋ก ์ด 127๊ฐ ๋ฌธ์์ ํน์๋ฌธ์๋ฅผ ์ ์ํ๊ณ ์์ด๋ง ๊ฐ๋ฅํ๋ค. ์ดํ ํ์ฅ ASCII๊ฐ ๋ฑ์ฅํ์ฌ 0x80 ~0xFF 127๊ฐ๋ฅผ ์ถ๊ฐ๋ก ์ ์ํ์ฌ ํ๋์ค์ด, ๋ ์ผ์ด๋ฑ ์ ๋ฝ์ด ํํ์ด ๊ฐ๋ฅํ๊ฒ ๋์๋ค.
ASCII๊ฐ ์ฌ์ฉ๋์ ํ๊ตญ,์ค๊ตญ,์ผ๋ณธ๋ฑ ๋ฌธ์๋ ASCII ์ฝ๋๋ก ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๋ฐ๋ผ์ ๋๋ผ๋ณ๋ก ๋ ์์ ์ธ ๋ฌธ์ ์งํฉ(ํ๊ตญ์ KSC 5061)์ ๋ง๋ค์ด๋ด์ ์ฌ์ฉํ๊ธฐ ์์ํ๋๋ฐ, ์น์์๋ ๋ฌธ์ ์งํฉ์ ์ง์ํ์ง ์์ผ๋ฉด ๊ธ์๋ฅผ ๋ณผ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ๊ธฐ ์์ํ์๋ค.
๋ํ ๋ฏธ๊ตญ์ ์ํํธ์จ์ด ํ์ฌ๋ค์ด ์ง์ญ๋ณ๋ก ๋ฌ๋ผ์ง๋ ์ธ์ฝ๋ฉ ๋ณํ์ ๊ด๋ฆฌํ๋๊ฒ์ ๋ํด์ ๋ง์ ๋น์ฉ์ด ๋ฐ์ํ์๊ณ , ์ด๋ก ์ธํด ์ธ์ฝ๋ฉ์ผ๋ก ์ธํ ์์ฅ ๊ณต๋ต์๋ ํฐ ์ฅ๋ฒฝ์ด ์๊ฒผ๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ทน๋ณต์ ์ํด ํต์ผ๋ ๋ฌธ์ ์งํฉ์ ๋ง๋ค๊ธฐ ์ํ ๋ ธ๋ ฅ์ด ์์๋์๋ค. ํต์ผ๋ ํ์ค ๋ฌธ์ ์งํฉ์ ๋ง๋ค๊ธฐ ์ํ ๋ ธ๋ ฅ์ ISO(๊ตญ์ ํ์ค ๊ธฐ๊ตฌ)์ ์ํด ์์๋์๊ณ ISO 10646 ๊ตญ์ ํ์ค์ด ๋ง๋ค์ด์ก๋ค.
์ด ๊ตญ์ ํ์ค์ 4๋ฐ์ดํธ ์ฒด๊ณ๋ก ๋ชจ๋ ๋ฌธ์์ 4๋ฐ์ดํธ๋ฅผ ํ ๋นํ์ฌ ์ฌ์ฉํ์๋ ๊ฒ์ด์๋ค. ํ์ง๋ง ๋ช๋ช ๋ํ ์ํํธ์จ์ด ํ์ฌ์์ ์๊ฒฌ์ฐจ๊ฐ ๋ฐ์ํ์ ํ์ฌ๋ค์ด ์ฐํฉํ์ฌ Unicode ์ปจ์์์์ ์กฐ์งํ๋ค. ๋น์ Unicode ์ปจ์์์์์ ์ ์ํ ๋ฐฉ์์ 2๋ฐ์ดํธ ์ฒด๊ณ์๋ค.
Unicode ์ปจ์์์์ ISO ์๊ฒ ์์ ๋ค์ ํ์ค์ ์ฌ์ฉํ ๊ฒ์ ์ ์ํ๊ณ , ์ด ์ ์์ด ์ผ๋ถ ๋ฐ์๋ค์ฌ์ง๋ฉด์ 1993 ๋ ISO 10646-1 ์ด๋ผ๋ ๊ตญ์ ํ์ค์ด ๋ฐํ๋์๋ค.
ISO 10646 ํ์ค์ ์ ์ ์ด๋ฆ์ ๊ตญ์ ๋ฌธ์ ์งํฉ(UCS, Universal Character Set) ์ด๋ค. 1991๋ ๋ถํฐ, ์ ๋์ฝ๋ ์ปจ์์์์์๋ ์ ๋์ฝ๋ ํ์ค๊ณผ ISO/IEC 10646์ ๋ฐ์ ์ํค๊ธฐ ์ํด ISO์ ๊ณต๋ ์์ ์ ํ๊ณ ์๋ค.
์ ๋์ฝ๋(Unicode)๋ ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ปดํจํฐ์์ ์ผ๊ด๋๊ฒ ํํํ๊ณ ๋ค๋ฃฐ ์ ์๋๋ก ์ค๊ณ๋ ์ฐ์ ํ์ค์ด๋ค. ์ด ํ์ค์๋ ISO 10646 ๋ฌธ์ ์งํฉ, ๋ฌธ์ ์ธ์ฝ๋ฉ, ๋ฌธ์ ์ ๋ณด ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฌธ์๋ค์ ๋ค๋ฃจ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ ํฌํจํ๊ณ ์๋ค.
์ ๋์ฝ๋์ ์ข ๋ฅ๋ UCS-2์ UCS-4, ๋ณํ ์ธ์ฝ๋ฉ ํ์(UTF, UCS Transformation Format)์ธ UTF-7, UTF-8, UTF-16, UTF-32๊ณผ ๊ฐ์ด ๋ค์ํ๊ฒ ์กด์ฌํ์ง๋ง ASCII์ ํธํ์ด ๊ฐ๋ฅํ๋ฉด์ ์ ๋์ฝ๋๋ฅผ ํํํ ์ ์๋ UTF-8 ์ธ์ฝ๋ฉ์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ค.
UTF-8์ ์ ๋์ฝ๋๋ฅผ ์ํ ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์ ์ธ์ฝ๋ฉ ๋ฐฉ์ ์ค ํ๋๋ก, ์ผ ํฐํ์จ๊ณผ ๋กญ ํ์ดํฌ๊ฐ ๋ง๋ค์๋ค. UTF-8์ Universal Coded Character Set + Transformation Format โ 8-bit ์ ์ฝ์์ด๋ค.
UTF-8 ์ธ์ฝ๋ฉ์ ์ ๋์ฝ๋ ํ ๋ฌธ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด 1Byte์์ 4Byte๊น์ง๋ฅผ ์ฌ์ฉํ๋ค.
- ํByte๋ ASCII ์ ๋ช ์๋ ์ผ๋ฆญํฐ 128๊ฐ ํํ์ด ๊ฐ๋ฅํ๋ค. (์ฝ๊ฒ ์ํ๋ฒณ)
- ๋Byte๋ ๊ทธ๋ฆฌ์ค์, ํ๋ธ๋ฆฌ์ด, ๋ฑ๋ฑ ๋ผํด๊ณํต ์ธ์ด๋ ๋ช๊ฐ์ง ๊ณํต ์ธ์ด ํํ์ด ๊ฐ๋ฅํ๋ค.
- ์ธByte๋ ์ผ๋ฐ์ ์ธ ๋ค๊ตญ์ด ํํ์ด ๊ฐ๋ฅํ๋ค. (์ฆ ํ๊ธ์ ๋ฒ์ฃผ๋ค!)
- ๋คByte๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์์ฐ์ด๋ ๊ธ๋ค์ ํํ์ด ๊ฐ๋ฅํ๋ค.
์ถ์ฒ: http://kkckc.tistory.com/55 [kkckc์ ์ผ์]
UTF-8์์ ํ๊ธ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ 3Byte๊ฐ ํ์ํ๋ค. ์ 3Byte๊ฐ ํ์ํ ๊น?
์ ๋์ฝ๋ ํ
์ด๋ธ์์ ํ๊ธ์ ์ฝ๋ ๋ฒ์๋ U+0800 ~ U+FFFF ์ด๋ค.
์ ์ฝ๋ ๋ฒ์๋ฅผ UTF-8 ํํ๋ก ๋ณํํ ํํ์ 1110xxxx 10xxxxxx 10xxxxxx์ด๋ค.
ํ๊ธ '๊ฐ'๊ฐ ๋งคํ๋ ์ ๋์ฝ๋ ํ
์ด๋ธ์ ๊ฐ์ U+AC00์ด๋ค. (U+0800 ~ U+FFFF ๋ฒ์์ ์ํด์๋ค)
(https://unicode-table.com/en/#AC00)
์ ๋์ฝ๋ ํ
์ด๋ธ ๊ฐ : 0xAC00
10์ง์ ๋ณํ : 44,032
2์ง์ ๋ณํ : 10101100 00000000
์ด๋ ๊ฒ ๋ณํํ 2์ง์๋ฅผ ์ฝ๋ํฌ์ธํธ(1110xxxx 10xxxxxx 10xxxxxx)์ ์ง์ด ๋ฃ์ผ๋ฉด ์๋์ ๊ฐ๋ค.
1110{1010} 10{1100}{00} 10{000000}
234 176 128
EA B0 80
๊ฒฐ๊ณผ์ ์ผ๋ก ํ๊ธ์ 3๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ์๋ค.
์ค์ต : https://goo.gl/GWjlch