μλ νμΈμ Foma π» μ λλ€.
μ€λμ νμμ λ§μ΄ λ€μ΄λ³΄κΈ΄ νμ§λ§ μ νν λ»μ λͺ¨λ₯΄λ Unicode,UTFμ λν΄ μ νν 곡λΆλ₯Ό ν΄λ³΄λ €κ³ ν©λλ€.
λ°λ‘ μμν κ²μ~
Unicodeλ?
μ΄κΈ°μ μ»΄ν¨ν°μμλ μμ€ν€λ₯Ό μ¬μ©νμλλ°, μ΄κ²μ 8λΉνΈλ§μ μ¬μ©ν΄μ 256κ° λ¬Έμλ₯Ό ννν μ μμμ΅λλ€.
(λΉνΈλ₯Ό λͺ¨λ₯΄μλ λΆλ€μ μ¬κΈ° μμ νμΈν μ μμ΅λλ€!)
νμ§λ§ 256κ°μ λ¬Έμλ‘λ μΈκ³μ μ λ§μ μΈμ΄λ₯Ό λ€λ£¨κΈ΄ νλ€μ£ .
κ·Έλμ μ μΈκ³ λͺ¨λ λ¬Έμλ₯Ό μμ©ν μ μλ μ°μ νμ€μ μ€κ³ν κ²μ΄ λ°λ‘ μ λμ½λμ λλ€.
μ΄ νμ€μλ λ¬Έμ μ§ν©μ΄λ λ¬Έμ μΈμ½λ© λ± λ¬Έμλ€μ λ€λ£¨κΈ° μν μκ³ λ¦¬μ¦ λ±μ ν¬ν¨νκ³ μμ΅λλ€.
μ λ μ½λλ μ λν¬ν μ½λλΌλ κ²μ μ€μΈ κ²μΌλ‘ λͺ¨λ λ¬Έμμ νΉμ λ²νΈλ₯Ό 맀겨μ μ¬μ©ν©λλ€.
νμ¬λ λ¬ΈμλΏλ§ μλλΌ π¨πΆππκ³Ό κ°μ μ΄λͺ¨μ§λ μ λμ½λμ ν¬ν¨λ©λλ€.
μ΄ 16λΉνΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ 2^^16μ 17κ°μ 보쑰 νλ©΄μ΄ μ‘΄μ¬νμ¬ 111,4112κ°μ§ λ¬Έμλ₯Ό ννν μ μμ΅λλ€.
νκΈμ μλμ κ°μ΄ 0xAC00 ~ 0xD7A3 κΉμ§ μ°¨μ§νκ³ μμ΅λλ€.
UTF-8
UTFμ ν λ€μμ Unicode Transformation Format)μ λλ€.
μ¦, μ λμ½λλ₯Ό λ³ν(μΈμ½λ©)νλ λ°©μμ λλ€.
λ€μ 8μ 8λΉνΈ μ¦, 1Byteλ₯Ό κΈ°μ€μΌλ‘ μΈμ½λ©νλ€λ μλ―Έμ λλ€.
λ°μ΄ν°λ² μ΄μ€μμ κΈ°λ³Έμ μΌλ‘ μ€μ λλ λ°©μμ΄ UTF-8μ λλ€.
UTF-16
μμμ μ€λͺ ν UTF-8μ 1Byte κΈ°μ€μ΄μ§λ§ UTF-16μ 16bit μ¦, 2Byte κΈ°μ€μΌλ‘ μΈμ½λ©νλ€λ μλ―Έμ λλ€.
μλμ°μμ κΈ°λ³Έμ μΌλ‘ μ€μ λλ λ°©μμ΄ UTF-16μ λλ€.
UTF-8μ λ°μ΄ν°λ² μ΄μ€μ΄κ³ μλμ°λ UTF-16μ΄κΈ° λλ¬Έμ λ³΄ν΅ REST APIλ₯Ό μ΄μ©ν΄μ λ°μ΄ν°λ₯Ό 보λ΄λ©΄
POST: μλμ°μμ UTF-16μΌλ‘ λ³΄λΈ λ¬Έμλ₯Ό λ°μ΄ν° λ² μ΄μ€μμ UTF-8λ‘ λ³νν΄ κ°μ§κ³ μλ€.
GET: λ°μ΄ν°λ² μ΄μ€μμ UTF-8λ‘ κ°μ§κ³ μλ€κ° UTF-16μΌλ‘ λ³νν΄ μλμ°μ μ λ¬νλ€.
UTF μΈμ½λ© λ° λμ½λ© κ³Όμ
Helloλ₯Ό UTF-8λ‘ μΈμ½λ© νκ² λλ©΄ λ€μν κ°μΌλ‘ λ³νν μ μλλ°μ.
μλμ κ°μ΄ λ€μν κ°μ μ»μ μ μμ΅λλ€. (μ¬μ΄νΈλ μ¬κΈ°λ‘ λ€μ΄κ°μλ©΄ λ©λλ€.)
μ΄ μ€μμ HexStringμ μ΄ν΄λ³΄λ©΄ 48656c6c6fλ‘ λμ΄μμ΅λλ€.
μ΄μ λ Hκ° UTF-8 Encoidng κ°μ΄ 48μ΄κ³
eκ° 65μ΄κ³
lμ΄ 6cμ΄κ³
oκ° 6fμ΄κΈ° λλ¬Έμ Helloλ 48656c6c6fκ° λλ κ²μ΄μ£ !
λμ½λ© λν λκ°μ΄ 48μ΄ H,65κ° e,6cκ° l,6fκ° o => Helloκ° λλ κ²μ΄μ£ .
κ°λ μ»΄ν¨ν°μμ νκΈμ΄ \uc548\ub155\ud558\uc138\uc694 κ³Ό κ°μ΄ λ³΄μΌ λκ° μμ΅λλ€.
μ΄κ² λν UTF-16μΌλ‘ νκΈμ μΈμ½λ© ν λ¬ΈμμΈλ°μ.
uc548 => μ
ub155 => λ
ud558 => ν
uc138 => μΈ
uc694 =>μ
μ΄λ κ² μμ κ°μ΄ μ λμ½λμ λ±λ‘λμ΄ μλ λ²νΈλλ‘ μΈμ½λ©κ³Ό λμ½λ©μ΄ μ΄λ£¨μ΄μ§κ² λ©λλ€.
λκΈ