nodejs
javascriptλ₯Ό νλ€ λ³΄λ©΄ μΈμ½λ©κ³Ό λμ½λ©μ λνμ¬ μμμΌ ν μκΈ°κ° μ€κ² λ©λλ€. ASCII μΈμ½λ©, URLμΈμ½λ©, HTML μΈμ½λ©, Base64 μΈμ½λ© λΉκ΅νμ¬ μμ λ΄ μλ€. κ·Έλ¦¬κ³ javascriptμμλ decodeURIComponent(), encodeURIComponent(), encodeURI(), decodeURI() ν¨μλ₯Ό ν΅ν΄ μΈμ½λ©κ³Ό λμ½λ©μ ν μ μμ΅λλ€.
μΈμ½λ©μ μ μλ μ¬λ¬ μν©μ λ°λΌ λ€λ₯΄κ² μ μ©λλ€κ³ ν μ μμ΅λλ€. ν° λ²μμμ μΈμ½λ©μ΄λ νΉμ μ 보λ₯Ό μ ν΄μ§ κ·μΉμ λ°λΌ λ³ννλ κ²μ μλ―Έν©λλ€. μ»΄ν¨ν° λ΄λΆμμμ μΈμ½λ©μ μ»΄ν¨ν°κ° μ€μ€λ‘κ° μ΄ν΄ν μ μλ 0κ³Ό 1λ‘ λ³ννλ κ²( λ¬Έμλ₯Ό λ°μ΄νΈλ‘ λ³ν )λ μΈμ½λ©μ΄λΌλ ννμ ν©λλ€. μΈμ½λ©μ λͺ©μ μ λ°λΌ μ¬λ¬ μΈμ½λ©μ΄ μ‘΄μ¬ν©λλ€. μ’ λ₯λ‘λ ASCII μΈμ½λ©, URLμΈμ½λ©, HTML μΈμ½λ©, Base64 μΈμ½λ© λ±λ±μ΄ μμ΅λλ€.
λμ½λ©μ΄λ μΈμ½λ©κ³Όλ λ°λ κ°λ μΌλ‘ μ»΄ν¨ν°μ μΈμ΄λ₯Ό μ¬λμ΄ μ΄ν΄ ν μ μλλ‘ λ³κ²½νλ κ²μ μλ―Έν©λλ€. μ»΄ν¨μκ° μΈμνκ³ μλ λ°μ΄νΈλ₯Ό μ¬λμ΄ μΈμ§ ν μ μλλ‘ λ¬Έμλ‘ λ³ννλ κ²μ μλ―Έν©λλ€.
κΈ°λ³Έμ μΌλ‘ μ»΄ν¨ν°λ μνλ²³μΈ a, b, c.. μ‘°μ°¨λ 무μμΈμ§ μμ§ λͺ»ν©λλ€. κ·Έλ¦¬κ³ κ°κ°μ μ»΄ν¨ν°λ§λ€ λ€λ₯Έ κ·μΉμ ν΅ν΄ μΈμ½λ©/λμ½λ©μ νλ€λ©΄ μ€κ΅¬λλ°©μ΄ λ©λλ€. μ΄λ¬ν μ΄μ λ‘ κ΅μ μ μΌλ‘ ν΅μΌλ κ·μΉμ λ§λ€κ² λλλ° μ΄λ₯Ό μμ€ν€ μ½λλΌκ³ ν©λλ€. κ·Έλ¬λ μμ€ν€ μ½λλ μμ΄λ§μ νννλλ€. μ΄λ¬ν μ΄μ λ‘ λ€λ₯Έ λλΌ μΈμ΄λ₯Ό μμ€ν€ μ½λλ‘ μ¬μ©νλ©΄ μΆ©λμ΄ μΌμ΄λ κΈμκ° κΉ¨μ§κ² λ©λλ€. λ°λΌμ μ¬λ¬ μΈμ΄λ€μ ν©μΉκΈ° μν κΈ°μ€μ΄ νμν΄μ§κ² λ©λλ€.
μμ μμ€ν€ μ½λμ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λμ¨ κ²μ΄ λ°λ‘ μ λμ½λμ λλ€. μ λμ½λλ κΈ°λ³Έμ μΌλ‘ μμ΄λ 1λ°μ΄νΈλ‘ ννμ΄ λκ³ νκ΅μ΄λ 2λ°μ΄νΈλ‘ ννμ΄ λ©λλ€. μ΄λ¬ν νμμΌλ‘ νΉμ μΈμ΄μμλ 3λ°μ΄νΈκΉμ§ ννμ΄ λλ λ¬Έμλ€μ΄ μκΈ°λ€ λ³΄λ, ν΅μΌλ μΈμ½λ©μ νκΈ° νλ€μ΄ μ§λλ€. (μ λμ½λλ κΈ°λ³Έμ μΌλ‘ 1λ°μ΄νΈμμ 4λ°μ΄νΈκΉμ§ μ¬μ©λλ€.) λ°λΌμ UTF-7, UTF-8, UTF-16, UTF-32 μΈμ½λ©κ³Ό κ°μ΄ μ¬λ¬ μΈμ½λ© λ°©μμ΄ μ겨λκ² λμμ΅λλ€.
UTF-8μ μ΄λ¦μμ μ μ μλ―, 8λΉνΈ λ¨μλ‘ μΈμ½λ©μ νλ κ²μ λλ€. λ§μ½ 1λΉνΈλ‘ νν κ°λ₯ν λ¬Έμλ₯Ό 4λΉνΈλ‘ νννλ€λ©΄ μμλλΉκ° 컀μ§κ² λ©λλ€. UTF-8μ λ¬Έμμ νν λΉνΈμ λ°λΌ κ°λ³μ μΌλ‘ μ‘°μ μ νκΈ° λλ¬Έμ μμλλΉλ₯Ό μ€μΌ μ μμ΅λλ€. λν UTF-8μ μ₯μ μ μ λμ½λμ λ°±νλ‘ νΈνμ΄ λλ μ₯μ μ κ°μ§λλ€.
ννμ΄μ§μ μ μνκΈ° μν΄
κ°λ°μ νλ€λ³΄λ©΄ νκΈμ΄ κΉ¨μ Έμ λμ€λ κ²½μ°κ° μμ΅λλ€. μ΄λ μΉ λΈλΌμ°μ λ§λ€ μ¬μ©νλ μΈμ½λ© λ°©μμ΄ λ€λ₯΄κΈ° λλ¬Έμ μκΈ°λ νμμ λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄μλ νλμ μΈμ½λ© λ°©μμΌλ‘ ν΅μΌνλ κ²μ΄ νμν©λλ€. νκ΅μμλ λ³΄ν΅ μΈμ½λ© λ°©μμΌλ‘ EUC-KRκ³Ό UTF-8μ μ£Όλ‘ μ¬μ©ν©λλ€. λμ΄ μΆ©λμ νλ€λ©΄ λΉμ°ν νκΈμ΄ κΉ¨μ§λ€. EUC-KRμ ASCII μΈμ½λ© λ°©μμΈ μμ΄λ§ 1byteλ‘ μΈμ½λ©νλ λ°©μμ νμ₯νμ¬ 2byteλ‘ νκΈμ μΈμ½λ©ν μ μλλ‘ λ§λ κ² μ λλ€. μ΄λ¬ν μ΄μ λ‘ κ³΅ν΅μΌλ‘ μ¬μ©λλ μΈμ½λ© λ°©μμ΄ μλλλ€. λ°λΌμ μ°λ¦¬λλΌμμλ§ μ¬μ© κ°λ₯νκ³ μΈκ΅μμλ νκΈμ΄ κΉ¨μ Έμ λμ¬ μ λ°μ μμ΅λλ€. EUC-KRμ μ©λμ΄ μ μ΄ μ΄μ μΈν°λ· νκ²½μ΄ μ’μ§ μμ κ³³μμλ μ νΈνμ§λ§, μ΅κ·Όμλ μ’ λ νμ€νλ 3byteμ UTF-8 λ°©μμ λ μ νΈν©λλ€.
Base64 μΈμ½λ©μ λ°μ΄λ리 λ°μ΄ν°(μ»΄ν¨ν°κ° μ΄ν΄νλ 0κ³Ό 1λ‘ μ΄λ£¨μ΄μ§ λ°μ΄ν°)λ₯Ό λ¬Έμμ μν₯μ λ°μ§ μλ ASCII λ¬Έμμ΄λ‘ λ³κ²½νλ κ²μ μλ―Έν©λλ€. κ·Έλ λ€λ©΄ λ€λ₯Έ μΈμ½λ©κ³Όλ λ¬΄μ¨ μ°¨μ΄μ μ΄ μμκΉμ? κ°κ°μ νλ‘κ·Έλ¨μ΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λ, μΈμ½λ© λ°©μμ΄ μ‘°κΈμ© λ€λ₯Έ κ²½μ°κ° μμ΅λλ€. μ΄λ¬ν κ²½μ°μ κ°μ λ°μ΄ν°λ λ€λ₯΄κ² ν΄μν κ°λ₯μ±μ΄ μμ΅λλ€. λ°λΌμ λ°μ΄ν° μ μ‘ μ λ€μν λ¬Έμ(νκ΅μ΄, μΈλμ΄, μΌλ³Έμ΄ λ±λ±)μ μκ΄μλ ASCII λ¬Έμμ΄λ‘λ§ κ΅¬μ±νλ Base64 μΈμ½λ©μ μ¬μ©νμ¬ μΈμ½λ©μ ν΅μΌμν€λλ° λͺ©μ μ΄ μλ€κ³ ν μ μμ΅λλ€. μ΄λ¬ν μ₯μ λλ¬Έμ μΆκ°μ μΌλ‘λ HTTP νλ‘ν μ½μμ νΉμλ¬Έμ νμ± λ¬Έμ λ₯Ό ν΄κ²°νλ κ²λ κ°λ₯ν©λλ€. λν μ©λμ΄ μ μ νμΌ μ μ‘ μμλ μ¬μ©λ©λλ€.
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
κΈ°λ³Έμ μΌλ‘ μμ
μλμ λ΄μ©μ ν΅ν΄ μ§κ΄μ μΌλ‘ μ€μ΅μ ν΄λ΄ μλ€.
νκ΅μ΄λ λ³νλμ΄ μΈμ½λ©μ΄ λμ΄ νμΆλ©λλ€.
μμ΄λ λ³νλλ κ²μ΄ μμ΅λλ€.
μ«μλ λ³νλμ§ μμ΅λλ€.
νΉμλ¬Έμ κ°μ κ²½μ° encodeURIμ encodeURIComponentμ μ°¨μ΄λ₯Ό μλμ κ°μ΄ νμΈ ν μ μμ΅λλ€.
url μΈμ½λ© μμλ