๋คํธ์ํฌ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋, ์ธ์ฝ๋ฉ์ด๋ผ๋ ๊ฒ์ ๋ํด ์ ๋๋ก ์ดํดํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค. ์ ํ์ํ์ง, ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง์ ๋ํด์ ์ดํดํด๋ณด๋ ํฌ์คํ ์ด๋ค.
ASCII
- ASCII
- American Standard Code for Information Interchange)
- 7 Bit๋ก ํ๋์ ๋ฌธ์ ํํ
- 128๊ฐ์ ๋ฌธ์ ํํ ๊ฐ๋ฅ
- ์์ด๋ฅผ ์ํ ์ธ์ฝ๋ฉ ๋ฐฉ์
- ํ๊ตญ์ด, ์ค๊ตญ์ด, ์ผ๋ณธ์ด, ์๋์์ ๊ฐ์ ๋ค๋ฅธ ๋๋ผ ์ธ์ด ํํ ๋ถ๊ฐ
ANSI
- ANSI
- American National Standard Institute
- 7๋นํธ์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด 8๋นํธ ์ฌ์ฉ
- 256๊ฐ์ ๋ฌธ์ํํ ๊ฐ๋ฅ
- 0x00๋ถํฐ 0x7F๊น์ง๋ ASCII์ ๋์ผ
- ๋๋จธ์ง 128๊ฐ์ ๋ํด ๋ค๋ฅธ ๋ฌธ์ ํํ
- ํ์ง๋ง 128๊ฐ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ํํํ๊ธฐ์ ํ๋ ์๊ธฐ ๋๋ฌธ์, ์ฝ๋ ํ์ด์ง ๋ผ๋ ๊ฒ์ ๋ง๋ค์ด์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฝ๋ํ๋ฅผ ์ฌ์ฉํ๋๋ก ํจ
- ํธํ์ฑ์ด ์๋นํ ๋จ์ด์ง
EUC-KR
- ํ๊ธ ์ง์์ ์ํด ์ ๋์ค ๊ณ์ด์์ ๋ฑ์ฅํ ์์ฑํ ์ธ์ฝ๋ฉ ๋ฐฉ์
- ์์ฑํ: ์์ฑ๋ ๊ฐ ๋ฌธ์ (๊ฐ, ์, ํ)์ ์ฝ๋๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์
- ์กฐํฉํ: ๋ฌธ์๋ฅผ ์ด๋ฃจ๋ ์์(์ด์ฑ, ์ค์ฑ, ์ข ์ฑ)์ ์ฝ๋๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์
- 2byte(16bit)๋ก ํ๋์ ๋ฌธ์๋ฅผ ํํ
- 0x0000๋ถํฐ 0x007F๊น์ง๋ KS X 1003 ์ฒด๊ณ (ASCII์ ๋์ผ, ์ญ์ฌ๋์๋ง โฉ๋ก ๋ณ๊ฒฝ)์ ๋์ผ, ๋๋จธ์ง๋ KS X 1001 ์ฒด๊ณ์ ๋์ผ
- ํ์ง๋ง KS X 1001 ์ฒด๊ณ๊ฐ ํ๊ธ ๋จ์ด๋ฅผ 2350์๋ง ์ฌ์ ์ ๋ฐฐ์ดํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ๊ธ ๋จ์ด ํํํ๊ธฐ ์ญ๋ถ์กฑ
- ์ด์ฑ ์์(19) * ์ค์ฑ ๋ชจ์ (21) * ์ข ์ฑ ๋ฐ์นจ ์์ (27) + ์ถ๊ฐ ์น๊ตฌ๋ค = ์ฝ 11000๊ฐ ์ด์
CP949
- ์ฝ๋ ํ์ด์ง 949
- a.k.a MS949
- MS์์ ํ๊ธ ์ง์์ ์ํด ํ์ฅํ ์์ฑํ ์ธ์ฝ๋ฉ ๋ฐฉ์
- EUC-KR์ด ๋ง์ ํ๊ธ ๋จ์ด๋ฅผ ํํํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅ
- 2byte(16bit) ์ฌ์ฉ, ํ์ง๋ง EUC-KR์ด ์ฌ์ฉํ์ง ์๋ ๋๋จธ์ง ๋ฐ์ดํธ์ด์ ํ์ฉํ์ฌ ๋๋ถ๋ถ์ ํ๊ธ ๋จ์ด ํํ ๊ฐ๋ฅ
- ํ์ง๋ง EUC-KR์์ ์ ๋ ฌํ๋ 2350๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์์ด์ ๊ฒฝ์ฐ ์ฌ์ ์ ์ ๋ ฌํ์ง ์์๋ค.
- 949์ ํ๊ตญ์ ๋์ํ๋ ์ฝ๋ ํ์ด์ง ๋ฒํธ๋ฅผ ์๋ฏธ
Unicode
- Unicode
- ์ ์ธ๊ณ์์ ์ฌ์ฉํ๋ ์๋ง์ ๋ฌธ์๋ค ๊ฐ๊ฐ์ ๋ถ์ฌํ ์ฝ๋ ์งํฉ(ํ)
- ์ฆ, ์ ์ธ๊ณ์ ์๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ํน์ ํ์ ๋งคํํ์ฌ, ์ด๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ธ์ฝ๋ฉ์ ํ ์ ์๋๋ก ํ ๊ฒ์ ์๋ฏธ
- utf-8, utf-16, utf-32 ๋ฑ์ ๊ทธ๋ฌํ ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ ๋ฌธ์๋ค์ ๋ฐ์ดํธ์ด์ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
UTF-N
- ์ ๋์ฝ๋ ๊ธฐ๋ฐ์ ๋ฌธ์๋ค์ ๋ฐ์ดํธ์ด์ ํํํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์
- UTF-8, UTF-16, UTF-32
- ๋ณํ ๋ฐฉ์
- ์ ๋์ฝ๋ ํ์์ ์ธ์ฝ๋ฉํ๊ณ ์ ํ๋ ๋ฌธ์์ ์ฝ๋๋ฅผ ์ฐพ๋๋ค.
- ํด๋น ์ฝ๋๋ฅผ ์ธ์ฝ๋ฉ ๊ท์น์ ๋ฐ๋ผ ๋ณํํ์ฌ ๋ฐ์ดํธ์ด์ ํํํ๋ค.
- ์ด ๋, ์ธ์ฝ๋ฉ ๊ท์น์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ฐฉ์์ด ์กด์ฌํ๋ค.
UTF-8
- UTF_8
- ๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ ๋ฐฉ์
- ์ธ์ฝ๋ฉ ํ๋ ค๋ ๋ฌธ์ ์ฝ๋๊ฐ ์ํ ๋ฒ์์ ๋ฐ๋ผ 1byte~4byte๋ก ์ธ์ฝ๋ฉ ํจ
- ์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์์ฃผ ์ฌ์ฉ๋๋ ๋ฌธ์๋ ์งง์ ๋ฐ์ดํธ๋ก ํํ
- ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ธด๋ฐ์ดํธ๋ก ํํ
- 128๊ฐ ๋ฌธ์(0x0000~0x007F)๋ ์ธ์ฝ๋ฉ ์์ด 1byte์ ๋ฃ์ ์ ์๋ค.
- ์ฆ, ์์ด๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฌธ์ํ๋๋น 1byte๋ง ์ฌ์ฉ
- ์ค๋, ์ ๋ฝ ์ง์ญ ์ธ์ด ์ฌ์ฉ์ ๋ฌธ์ํ๋ ๋น 2byte ์ฌ์ฉ
- ๋์์์๊ถ ์ธ์ด 3byte
- ๋ฐฉ์์ ๊ฒฝ์ฐ, Wiki ์ฐธ์กฐ
UTF-16
- UTF-16
- 16๋นํธ ๊ธฐ๋ฐ์ ๊ฐ๋ณ๊ฑฐ๋ฆฌ ์ธ์ฝ๋ฉ ๋ฐฉ์
- ํ๊ธ์ 2byte๋ก ์ธ์ฝ๋ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ ๊ฐ๋ฅ
- ํ์ง๋ง ANSI์ ํธํ ๋ถ๊ฐ, Byte Ordering ๊ณ ๋ ค ๋ฌธ์ ๋๋ฌธ์ ์ฌ์ฉ์ ๋ณต์ก์ฑ์ด ๋์
UTF-32
- UTF-32
- ๋ชจ๋ ๋ฌธ์๋ฅผ 4byte ๊ณ ์ ๊ธธ์ด ์ธ์ฝ๋ฉ
- ์ผ๊ด์ฑ์๊ณ ๋จ์ํ ๋ฐฉ์
- ํ์ง๋ง ํ๋์ ๋ฌธ์๋ฅผ ์ ์ฅํ๋๋ฐ ์์ด ๊ณต๊ฐ์ ๋๋ฌด ๋ง์ด ์ฐจ์งํจ
Url Encoding(Percent Encoding)
- Percent Encoding
- URL์์ URL๋ก ์ฌ์ฉํ ์ ์๋ ๋ฌธ์, URL๋ก ์ฌ์ฉ์ ๊ฐ๋ฅํ๋ ์๋ฏธ๊ฐ ์๊ณก๋ ์ ์๋ ๋ฌธ์๋ค์
%XX
์ ํํ๋ก ๋ณํํ๋ ๊ฒXX
๋ 16์ง์ ๊ฐ
- ๋น์์ฝ ๋ฌธ์
alphanumeric
+-_.?~
- ์์ฝ ๋ฌธ์
!*'();:@&=+$,/?#[]
- ์์
- Original :
https://velog.io/@wansook0316/?keyword=์ธ์ฝ๋ฉ&๋์ฝ๋ฉ
- Transformed :
https%3a%2f%2fvelog.io%2f%40wansook0316%2f%3fkeyword%3d%ec%9d%b8%ec%bd%94%eb%94%a9%26%eb%94%94%ec%bd%94%eb%94%a9
- Original :
- ์ฌ์ฉ ์ด์
- ์ธํฐ๋ท์ ํตํด ์ ์กํ ์ ์๋ ๋ฌธ์๋ ์ค๋ก์ง ASCII ๋ฌธ์์ด๋ค.
- ๋ฐ๋ผ์ ํ๊ธ ๊ฐ์ ๊ฒฝ์ฐ ๋ณํ์ด ํ์ํ๋ค.
- ์ด ๋, ๋ฌธ์์ด์ ๋ฐ์ดํธ์ด๋ก ๋ณํํด์ค๋ค. ์ด ๋, UTF-8์ ์ฌ์ฉํ๋ค.
- UTF-8์์ ํ ๋ฌธ์๋ 3๋ฐ์ดํธ๋ก ๋ณํ๋๋ค.
์ธ์ฝ๋ฉ = %ec%9d%b8%ec%bd%94%eb%94%a9
์ผ๋ก ์ด 9๋ฐ์ดํธ๋ก ์ธ์ฝ๋ฉ๋์๋ค.ec9db8
๊ฐ๊ฐ์ octet์ผ๋ก ํํ (4bit * 6 = 24bit)
- ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ
- ASCII ๋ฌธ์๋ผ๊ณ ํ ์ง๋ผ๋ URL์์ ํน์ ํ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ ๋จ์ด๋ค์ด ์์ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด
/
,&
,"="
๋ฑ์ด ์๋ค./
- url์ ๋ ๋ฒจ ๋ถ๋ฆฌ
&
- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๊ตฌ๋ถ
"="
- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๊ฐ ์ง์
- ์์ ์์์๋
%3d, %26
๊ณผ ๊ฐ์ด ๋ณํ๋์ด ๋ค์ด๊ฐ๋ค. - ์ด๋ฌํ ๋ฌธ์์ ๊ฒฝ์ฐ, ๋ฌธ์ ๊ทธ ์์ฒด์ ์๋ฏธ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ณํ๊ณผ์ ์ ํตํด ์ด๋ฅผ ๊ตฌ๋ถํ ์ ์๋๋ก ํด์ผ ํ๋ค.
- ์ธํฐ๋ท์ ํตํด ์ ์กํ ์ ์๋ ๋ฌธ์๋ ์ค๋ก์ง ASCII ๋ฌธ์์ด๋ค.
- ๊ณต๋ฐฑ๊ฐ์ ๊ฒฝ์ฐ URL์์ ํ์ฉ๋์ง ์๋๋ค. (
%20
๋๋+
๋ก ์ธ์ฝ๋ฉ๋๋ค.)
Base64
- Base64
- Byte์ด (1010โฆ)์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
- ์ด ๋, ๋ฐ์ดํธ์ด์ 6๋นํธ ๋จ์๋ก ์ชผ๊ฐ ํ, ํด๋น 6๋นํธ์ ํด๋น๋๋ ASCII ๋ฌธ์๋ก ๋ณํํ๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ (6๋นํธ), 128๊ฐ์ ๋ฌธ์์ค (์์คํค ์ฝ๋๋ 7๋นํธ ๋ด๋ก ํํ๋จ) ์ถ๋ ฅ๊ฐ๋ฅํ ๋ฌธ์ 95๊ฐ ์ค์ (์ ์ด ๋ฌธ์) 64๊ฐ๋ง์ ์ฌ์ฉํ๋ค.
- 6๋นํธ ์ฌ์ฉ โ ํํ ๊ฐ๋ฅํ ๋ฌธ์์ ๊ฐ์ 64๊ฐ โ ์ซ์๋ก ๋ณํํ์ ๋ 64๊ฐ์ ์์ ๋์๋๋ ์ฝ๋๋ค โ 64์ง๋ฒ โ Base64 ๋ผ๋ ์ด๋ฆ์ด ๋ถ๊ฒ ๋์๋ค.
- A-Z, a-z, 0-9๋ก ์ฒ์์ 62๊ฐ๊ฐ ๋ณดํต ๊ตฌ์ฑ๋๋ฉฐ, ๋๋จธ์ง 2๊ฐ์ ๋ฌธ์๋ฅผ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ๋์ ๋ฐ๋ผ ์ข
๋ฅ๊ฐ ๊ตฌ๋ถ๋๋ค.
- ์ฌ์ค 64๊ฐ์ ๋ฌธ์๋ฅผ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ์ง๋ ์์๋ก ์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ
- ๊ธธ์ด ์ฆ๊ฐ
- ์์์ 3๊ฐ์ ๋ฌธ์๊ฐ ์๋ค๊ณ ํ์. (Man)
- ๊ฐ๊ฐ์ ๋ฌธ์๋ 1byte๋ก ํํ๋๊ธฐ ๋๋ฌธ์ ์ด 24Bit๋ฅผ ์ฐจ์งํ๋ค.
- Base64๋ ์ด ๋ฐ์ดํธ ์ด์ 6๊ฐ์ฉ ์ชผ๊ฐ๊ฒ ๋๊ณ , ๊ฐ๊ฐ์ 6๋นํธ์ ํด๋นํ๋ ๋ฌธ์๋ก ์ด๋ฅผ ์นํํ๋ค.
- ์ด ๊ฒฝ์ฐ, 24/6 = 4๋ก, 4๊ฐ์ ๋ฌธ์๋ก ๋ณํ๋๋ค. (TWFu)
- Man โ TWFu๋ก ๊ธธ์ด๊ฐ ๋์ด๋ฌ๋ค.
- 1๋ฐ์ดํธ๋ก ํํ๋๋ ๋ฌธ์๋ฅผ 6๋นํธ๋ก ํํํ๊ธฐ ๋๋ฌธ์ ๊ธธ์ด ์ฆ๊ฐ๋ ํ์ฐ์ ์ด๋ค.
- ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ ์ฌ์ฉํ ๊น?
- ์ฌ์ฉ ์ด์
- System ๋
๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- ASCII๋ ๋ชจ๋ ์์คํ ์ด ๊ณตํต์ผ๋ก ์๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ฌธ์์ด์ ๋ฐ๊พผ๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๊ฒฝ์ฐ ํต์ ๊ณผ์ ์์ ๋ฐ์ดํฐ๊ฐ ์๋ชป ํด์๋๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ํน์, ์ด๋ฏธ์ง์ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ผ ํ๋ ๊ฒฝ์ฐ, ์์คํ ๊ณผ ๋ฌด๊ดํ ๋ฐฉ์์ผ๋ก ๋์ผํ๊ฒ ํํ๋๋๋ก ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
- System ๋
๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- ์ธ์ฝ๋ฉ ๊ณผ์
- 8๋นํธ ๋จ์๋ก ๋์ด ์๋ ๋ฐ์ดํธ์ด์ 6๋นํธ๋ก ์ชผ๊ฐ ํ, 24๋นํธ ๋ฒํผ์ ์ฐจ๊ณก์ฐจ๊ณก ์ฑ์ ๋ฃ๋๋ค.
- 6๋นํธ์ธ ์ด์ ๋ ์์๋ ๋งํ๋ฏ, 64๊ฐ์ ๋ฌธ์๋ง์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
- 24๋นํธ์ธ ์ด์ ๋ 8(๋ณํ ์ ๋ฌธ์ ํฌ๊ธฐ)๊ณผ 6(๋ณํํ ๋นํธ ํฌ๊ธฐ) ์ ์ต์ ๊ณต๋ฐฐ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ง์ฝ ๋ง์ง๋ง ๋ฉ์ด๋ฆฌ๊ฐ 6๋นํธ๋ณด๋ค ์๋ค๋ฉด, ๋๋จธ์ง ๋ถ๋ถ์ 0(Padding Bit)๋ก ์ฑ์์ 24๋นํธ ๋ฒํผ์ ์ง์ด ๋ฃ๋๋ค.
- ๋ชจ๋ ๋ฃ์์ ๋, 24๋นํธ๊ฐ ๋ค ์ฑ์์ง์ง ์์๋ค๋ฉด ๋จ์ 6๋นํธ ๊ณต๊ฐ์ ๊ฐ์๋งํผ
"="
์ ์ถ๊ฐํ๋ค.
- 8๋นํธ ๋จ์๋ก ๋์ด ์๋ ๋ฐ์ดํธ์ด์ 6๋นํธ๋ก ์ชผ๊ฐ ํ, 24๋นํธ ๋ฒํผ์ ์ฐจ๊ณก์ฐจ๊ณก ์ฑ์ ๋ฃ๋๋ค.