본문 바로가기
개발/Javascript&Jquery

JavaScript에서 encode 처리 방법: 재밌고 친절한 가이드

by 쓸있쏜 2024. 12. 6.

안녕하세요, 코딩 마법사 여러분! 😊 오늘은 여러분의 코드를 한층 더 안전하고 세련되게 만들어줄 마법 같은 "JavaScript에서의 인코딩 처리"에 대해 이야기해볼게요. 평소에 "왜 내 데이터가 깨지지? 왜 이상한 문자가 나타나는 거야?"라고 고민했던 적 있다면, 이 글을 꼭 끝까지 읽어보세요! 🎉


🎩 인코딩이란?

먼저, "인코딩(encode)"이란 게 뭘까요? 간단히 말해서, 데이터를 특정 형식으로 변환하는 과정을 뜻해요. 예를 들어, 우리가 쓰는 한글, 영어 같은 문자들은 컴퓨터가 바로 이해하지 못해요. 그래서 이걸 컴퓨터가 알아들을 수 있는 코드로 바꿔줘야 하는데, 그게 바로 인코딩이에요!

이해가 안 된다구요? 음, 이런 거예요.
우리가 친구한테 비밀 메시지를 보낼 때 "으헤헤, 비밀 암호로 말해볼까?" 하고, "사랑해"를 "52H8" 같은 코드로 바꾸는 거랑 비슷한 거죠. 이 과정을 JavaScript에서 아주 쉽게 할 수 있답니다.


🎮 encodeURIComponent()와 encodeURI() 차이점

인코딩에는 두 가지 주요 함수가 있어요.
encodeURIComponent()와 encodeURI()예요. 이 둘은 이름부터 헷갈릴 수 있지만, 차이가 분명해요.

  1. encodeURIComponent()
    👉 이건 URL의 모든 부분을 인코딩해요.
    예를 들어, "이름=홍길동"이라는 문자열을 인코딩한다고 하면, 이 함수는 "="도, "&"도 모두 안전하게 처리해 줘요.
  2. encodeURI()
    👉 이건 URL 전체를 인코딩할 때 써요. 그러나 슬래시(/), 물음표(?), 앰퍼샌드(&) 같은 URL 구조를 나타내는 기호는 건드리지 않아요. 왜냐면, 그런 기호들은 URL 구조를 깨면 안 되니까요!

💻 간단한 예시로 이해하기

자, 직접 보면서 이해해볼까요?

const uri = "https://example.com/이름=홍길동&나이=30";

console.log(encodeURIComponent(uri));
// 출력: https%3A%2F%2Fexample.com%2F%EC%9D%B4%EB%A6%84%3D%ED%99%8D%EA%B8%B8%EB%8F%99%26%EB%82%98%EC%9D%B4%3D30

console.log(encodeURI(uri));
// 출력: https://example.com/%EC%9D%B4%EB%A6%84=%ED%99%8D%EA%B8%B8%EB%8F%99&%EB%82%98%EC%9D%B4=30

보세요!

  • encodeURIComponent()는 모든 문자를 안전하게 바꿔버렸죠.
  • 반면, encodeURI()는 URL 구조를 유지하면서 한글만 인코딩했어요.

🌟 base64 인코딩도 한번 해볼까요?

"근데 base64는 뭔가요?"
이건 아주 멋진 인코딩 방식이에요. 데이터를 64진법 문자로 바꿔줘요. (말만 어렵지, 사실 되게 간단해요!)

예제를 봅시다.

const text = "Hello, JavaScript World!";
const encoded = btoa(text); // 인코딩
console.log(encoded);
// 출력: SGVsbG8sIEphdmFTY3JpcHQgV29ybGQh

const decoded = atob(encoded); // 디코딩
console.log(decoded);
// 출력: Hello, JavaScript World!

btoa()는 텍스트를 base64로 인코딩하고,
atob()는 인코딩된 텍스트를 다시 디코딩해줘요.


🛠 실전에서의 활용

이제 "아, 그래서 이걸 어디다 쓰라는 건데?" 싶으시죠?

1. URL에 데이터 붙이기

encodeURIComponent()는 검색 쿼리를 만들 때 유용해요!

const query = "name=홍길동&job=개발자";
const url = `https://example.com/search?${encodeURIComponent(query)}`;
console.log(url);
// 출력: https://example.com/search?name%3D%ED%99%8D%EA%B8%B8%EB%8F%99%26job%3D%EA%B0%9C%EB%B0%9C%EC%9E%90

2. 민감한 데이터 보호

base64는 비밀번호나 토큰 같은 데이터를 숨길 때 쓸 수 있어요. (물론, 이건 암호화가 아니라 단순 변환이라 추가 보안이 필요해요!)


🦄 마무리: 인코딩은 꼭 알아야 하는 마법!

JavaScript에서의 인코딩은 생각보다 쉽죠?
데이터를 안전하게 다루고, URL 구조를 깨지 않도록 하고, 때론 예쁜 base64 코드를 만들어보는 것! 모두 인코딩 덕분이에요. 오늘 배운 내용을 꼭 연습해 보세요. "뭐야, 별거 아니네?"라는 생각이 들 거예요.

코딩은 즐겁게! 다음에도 재미난 주제로 찾아올게요.
그럼, 안녕히 계세요, 마법사 여러분! ✨

 

댓글