๋ฌธ์ ์ธ์ฝ๋ฉ ๋ถ๋ฅ
- SBCS(Single Byte Character Set)
- 1Byte๋ก ๋ฌธ์๋ฅผ ํํํ๋ ๋ฐฉ์
- ํํ ๋ฒ์ : ์๋ฌธ, ์ซ์ ๋ฐ ์ผ๋ถ ํน์ ๋ฌธ์
- ๋ํ ๋ฌธ์์
: ASCII
- MBCS(Multi Byte Character Set)
- ๋ฌธ์์ ๋ฐ๋ผ ์ ๋์ ์ธ ํฌ๊ธฐ๋ก ๋ฌธ์๋ฅผ ํํํ๋ ๋ฐฉ์
- 1Byte : ์๋ฌธ, ์ซ์ ๋ฐ ์ผ๋ถ ํน์ ๋ฌธ์
- 2Byte~ : ์์คํค ์ฝ๋ ๋ฒ์ ์ธ์ ์์์ ๋ฌธ์๋ ํน์ ๋ฌธ์
- ๋ํ ๋ฌธ์์
: ANSI, UTF-8
- WBCS(Wide Byte Character Set)
- 2Byte ์ด์์ ๊ณ ์ ํฌ๊ธฐ๋ก ๋ฌธ์๋ฅผ ํํํ๋ ๋ฐฉ์
- ํํ ๋ฒ์ : ๋๋ถ๋ถ์ ๋ฌธ์
- ๋ํ ๋ฌธ์์
: Unicode
๋ฌธ์ ์ธ์ฝ๋ฉ
1. ASCII (American Standard Code for Information Interchange)
- ASCII๋ ์ต์ด์ ๋ฌธ์์ด ์ธ์ฝ๋ฉ
- 7bit๋ก ๊ตฌ์ฑ
- ์์ด๋ฅผ ์ํ ๋ฌธ์, ์ซ์, ํน์๋ฌธ์, ๊ธฐํธ ๋ฑ 128๊ฐ ๋ฌธ์๋ฅผ ํํ (2^7 == 128)
- ์์ด๋ฅผ ์ํ ๋ฌธ์(American Standard Code)์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ธ์ด๋ ํํ์ด ๋ถ๊ฐ๋ฅ
2. ANSI (American National Standard Institute)
- ANSI๋ ASCII์ ํ์ฅํ ๋๋์ผ๋ก ์์ด ์ด์ธ์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ง์ํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง
- 8bit๋ก 256๊ฐ์ ๋ฌธ์๋ฅผ ํํ
- ์์ 7bit๋ ASCII์ ๋์ผํ๋ฉฐ, ๋ค์ 1bit๋ก ๋ค๋ฅธ ์ธ์ด์ ๋ฌธ์ํ(Code Page)๋ฅผ ์๋ฏธ
- ๊ฐ ์ธ์ด๋ณ๋ก Code ๊ฐ์ ๊ฐ์ง - CodePage
- ANSI = ASCII(7bit) + CodePage(1bit)
- ANSI๋ Windows์์ CP949 ๋ฑ์ผ๋ก ์ ์ฅ๋๋ค
3. EUC-KR (Extended Unix Code-Korea)
- ํ๊ธ ์ง์์ ์ํด ์ ๋์ค ๊ณ์ด์์ ๋์จ ์์ฑํ ์ฝ๋ ์กฐํฉ
- ์์ฑํ ์ฝ๋ - ์์ฑ๋ ๋ฌธ์ ํ๋ํ๋์ ์ฝ๋ ๋ฒํธ๋ฅผ ๋ถ์ฌํ ๊ฒ
- ์กฐํฉํ ์ฝ๋ - ์์ฑํ ์ฝ๋์ ๋ฐ๋๋ก, ์์๊ณผ ๋ชจ์ ๊ฐ๊ฐ์ ์ฝ๋ ๋ฒํธ๋ฅผ ๋ถ์ฌํ์ฌ ์ด์ฑ, ์ค์ฑ, ์ข
์ฑ์ ์กฐํฉํ์ฌ ํ๋์ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์
- 2Byte๋ก ํ๋์ ๋ฌธ์๋ฅผ ํํ
- ํ๊ธ ๋จ์ด 2350์๋ง ์ฌ์ ์์ผ๋ก ๋ฐฐ์ดํ์ฌ ๋ชจ๋ ํ๊ธ ๋จ์ด๋ฅผ ํํํ๊ธฐ์ ์ญ๋ถ์กฑ
4. CP949 (Code Page 949)
- ํ๊ธ ์ง์์ ์ํด ์๋์ฐ์ฆ ๊ณ์ด์์ ๋์จ ํ์ฅ ์์ฑํ ์ฝ๋ ์กฐํฉ
- 2Byte๋ก ํ๋์ ๋ฌธ์๋ฅผ ํํ
- EUC-KR์ด ์ฌ์ฉํ์ง ์๋ ๋๋จธ์ง ๋ฐ์ดํธ์ด์ ํ์ฉํ์ฌ ๋๋ถ๋ถ์ ํ๊ธ ๋จ์ด๋ฅผ ํํ ๊ฐ๋ฅ
- EUC-KR์ ํ์ฅ์ด๋ฏ๋ก ํธํ๋๋ฉฐ, EUC-KR์์ ํํ๋์ง ์๋ ๋ฌธ์๋ ์กฐํฉํ์ฌ ํํ
- 949๋ ํ๊ตญ ํ์ด์ง ๋ฒํธ๋ฅผ ์๋ฏธ
- MS949, Windows-949๋ผ ๋ถ๋ฅด๊ธฐ๋ ํจ
- ์๋์ฐ ๋ฉ๋ชจ์ฅ์์ ANSI ์ธ์ฝ๋ฉ์ผ๋ก ์ ์ฅํ๋ฉด CP949 ๋ฐฉ์์ ์ํด ์ธ์ฝ๋ฉ ๋๋ค.
5. UNICODE ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ
Unicode
- ์ ์ธ๊ณ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ปดํจํฐ์์ ์ผ๊ด๋๊ฒ ํํํ ์ ์๋๋ก ๋ฌธ์์ ๋ถ์ฌ๋ ๊ณ ์ ํ ์ฝ๋๊ฐ(CP: Code Point)๋ค์ "ํ"
- 2byte ์ซ์๋ก ๋ฌธ์์ ์ฝ๋๋ฅผ 1:1 ๋งคํ์ํค๋ ๋ฐฉ์
- UTF-8, UTF-16, UTF-32 ๋ฑ์ ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ ๋ฌธ์๋ค์ ๋ฐ์ดํธ์ด์ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ์
- ์ ๋์ฝ๋๋ ์ ์ธ๊ณ ๋ฌธ์๋ค ๊ฐ๊ฐ์ ๋งตํ๋ ์ฝ๋๋ค์ ๋ด๊ณ ์๋ ๊ฑฐ๋ํ ํ์ด๋ฉฐ, UTF-8 ๋ฑ์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๊ทธ๋ฌํ ์ ๋์ฝ๋ ํ๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์๋ค์ ๋ฐ์ดํธ์ด์ ํํํ๋ ๋ฐฉ์์ด๋ผ ์๊ฐ
- (์ ๋์ฝ๋๋ฅผ ํํํ๋ ์ฌ๋ฌ ๊ฐ์ง ์ธ์ฝ๋ฉ ๋ฐฉ์๋ค์ด ์กด์ฌ)
- ์ ๋์ฝ๋๋ ๋ฌธ์์ ๋ถ์ฌ๋ ์ฝ๋๊ฐ์ ์งํฉ์ด๋ฉฐ, ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ผ๋ก ์ ์ฅํ ๋๋ UTF-8/16/32 ๋ฑ์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ด ํ์ํจ
5-1. UTF-8 (Unicode Transformation Format - 8bit)
- ์ ๋์ฝ๋๋ฅผ ์ํ ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์ ์ธ์ฝ๋ฉ(๋ฉํฐ๋ฐ์ดํธ) ๋ฐฉ์ ์ค ํ๋
- ๋ฉํฐ๋ฐ์ดํธ ๊ฐ๋
์ ์ฌ์ฉํ์ฌ ํ๋์ Character Set์ ๊ฑฐ์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๋ฃ์
- ๋ฉํฐ๋ฐ์ดํธ๋ ํํํด์ผ ํ๋ ๋ฌธ์์ ๋ฐ๋ผ ๊ธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ณ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๋ ๊ฒ
- ๋ฉํฐ๋ฐ์ดํธ(1~4bytes)๋ก ์ต๋ 1,112,064์๋ฅผ ํํ ๊ฐ๋ฅ
- ANSI์ ๋จ์ ๋ณด์์ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง
- ANSI๋ ๋ค๊ตญ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด CodePage ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์๊ณ ์์ด์ผ ํ๋ค.
- ANSI๋ ๊ณ ์ ๋ฐ์ดํธ(1byte) ํํ๋ก ์ต๋ 256์ ํํ ๊ฐ๋ฅ
- ์ฒซ 128์๋ ASCII ์ฝ๋ ๊ฐ์ผ๋ก ANSI์ UTF-8์ด ๋์ผ
- ์ธ์ด๋ณ ํฌ๊ธฐ
- ์์ด- 1byte
- ์ค๋์ง์ญ ์ธ์ด ๋๋ ๋ง์ ์ ๋ฝ ์ธ์ด๊ฐ 2bytes
- ํ๊ตญ ์ค๊ตญ, ์ผ๋ณธ ๋ฑ ๋์์์๊ถ ์ธ์ด๋ 3bytes์ด์
5-2. UTF-16
- 16bit ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅํ๋ UTF-8์ ๋ณํ
- ์์ฃผ ์ฌ์ฉํ๋ ๋ฌธ์๋ 2byte, ๊ทธ๋ ์ง ์์ ๋ฌธ์๋ 4byte๋ก ํํ
- ํ๊ธ์ ๊ฒฝ์ฐ, UTF-16์ผ๋ก ์ ์ฅํ๋ฉด 2bytes๋ฉด ๋์ด ์ฉ๋์ ์ด์ ์ด ์๋ค.
- UTF-8๋ก ์ ์ฅํ๋ฉด 3bytes๊ฐ ํ์
- ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ 2bytes ์ด์์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ์์ด ํฐ ์ด์ ์ ์๋๋ค.
- Byte Ordering์ ๊ณ ๋ คํจ์ ๋ฐ๋ฅธ ๋ณต์ก์ฑ ์ฆ๋์ ANSI์ ํธํ์ด ์ ๋๋ ๋จ์ ์ด ์๋ค.(BOM - Byte Order Mark)
- Byte Ordering์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์์๋ก, Little Endian๊ณผ Big Endian ๋ฐฉ์์ด ์๋ค.
5-3 UTF-32
- ๋ชจ๋ ๋ฌธ์๋ฅผ 4byte์ ๊ณ ์ ๊ธธ์ด๋ก ์ธ์ฝ๋ฉ
- ์ฝ๋ ๋ณํ ๊ท์น์ด๋ ๊ฐ๋ณ ๊ธธ์ด์ ๋ํ ํน๋ณํ ๊ณ ๋ ค๋ฅผ ํ๊ณ ์ถ์ง ์์ ๋, ์ผ๊ด์ฑ ์๊ณ ๋จ์ํ ๋ฐฉ์์ผ๋ก ๋ฌธ์์ด์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ฅ์
- ํ๋์ ๋ฌธ์๋ฅผ ์ ์ฅํ๋๋ฐ ๋๋ฌด ๋ง์ ์ ์ฅ ๊ณต๊ฐ์ด ์ฌ์ฉ๋๊ณ Byte Ordering์ ๊ณ ๋ คํจํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์์ด ์์ฃผ ์ฌ์ฉ๋์ง ์๋๋ค.