인코딩 도구|Base64·URL 변환
Encoding Suite는 Base64, URL, HTML 엔티티, 바이너리, 16진수, 모스 부호, ROT13 등 17가지 형식을 브라우저에서 인코딩·디코딩하는 무료 도구입니다.
Encoding Suite란 무엇인가요?
Encoding Suite는 단일 인터페이스에서 17가지 형식을 지원하는 무료 브라우저 기반 텍스트 인코딩 및 디코딩 도구입니다: Base64, URL 인코딩, HTML 엔티티, 바이너리, 16진수, 모스 부호, ROT13, Unicode 이스케이프 시퀀스, XOR 암호, 시저 암호, Vigenère 암호, Atbash 암호, Punycode, Quoted-Printable, UUencode, 압축(GZip/Deflate/LZ-String), 16진 덤프. 쿼리 문자열을 인코딩하거나, Base64 토큰을 디코딩하거나, HTML 인코딩된 페이로드의 실제 내용을 확인할 때마다 별도의 도구로 전환해야 하는 개발자의 지속적인 번거로움을 해결합니다. 모든 처리는 실시간으로 완전히 클라이언트 측에서 이루어집니다. 데이터는 서버로 전송되지 않습니다.
주요 기능
- 17가지 인코딩 형식을 레이블이 있는 탭을 통해 접근할 수 있으며, 각각 전용 인코딩/디코딩 모드가 있습니다.
- 실시간 변환: 메인 인코딩 탭에서는 제출 버튼 없이 입력하는 동안 출력이 업데이트됩니다.
- 스왑 버튼: 한 번의 클릭으로 입력과 출력을 교환하고 인코딩/디코딩 모드를 자동으로 전환합니다. 이로써 왕복 검증이 즉각적으로 이루어집니다.
- 암호 지원: XOR(키 기반, 자체 역원), 시저(이동 1–25), Vigenère(키워드), Atbash(자체 역원)가 현대 인코딩 형식과 함께 내장되어 있습니다.
- 압축 탭: GZip, Deflate, LZ-String UTF-16 또는 LZ-String Base64로 텍스트를 압축 및 압축 해제합니다. GZip과 Deflate 출력은 Base64 또는 16진수로 렌더링할 수 있으며, 도구는 원본 크기, 결과 크기, 백분율 감소를 표시합니다.
- 16진 덤프 탭: 입력한 텍스트 또는 업로드한 파일에서
xxd스타일의 16진 덤프를 생성하며, 열 너비를 설정할 수 있습니다(행당 8, 16 또는 32바이트). - 배치 모드: 줄당 하나의 문자열 목록을 표준 인코딩 탭을 통해 처리하며, 진행률 표시와 "모든 결과 복사" 내보내기를 사용할 수 있습니다.
Encoding Suite 사용 방법
1단계: 형식 탭 선택
Encoding Suite를 엽니다. 도구 상단에 17개의 탭이 나열됩니다: Base64, URL, HTML, Binary, Hex, Morse, ROT13, Unicode, XOR, Caesar, Vigenère, Atbash, Punycode, Quoted-Print., UUencode, Compression, Hex Dump. 필요한 형식의 탭을 클릭합니다.
2단계: 인코딩 또는 디코딩 모드 설정
입력 영역 위에 화살표 아이콘이 있는 토글이 있습니다. 활성 모드는 기본 색상으로 강조 표시됩니다. 화살표를 클릭하여 모드를 전환하고 현재 입력과 출력을 자동으로 교환합니다. 인코딩된 결과를 디코딩하면 원래 문자열이 반환되는지 확인하는 데 유용합니다.
3단계: 텍스트 입력
왼쪽 텍스트 영역에 입력하거나 붙여넣습니다(인코딩 모드에서는 "Input", 디코딩 모드에서는 "Encoded"로 표시). 출력은 오른쪽 텍스트 영역에 즉시 나타납니다. 키가 필요한 암호 형식(XOR, Vigenère)의 경우 텍스트 영역 위에 "Cipher Key" 입력란이 나타납니다. 시저 암호의 경우 대신 숫자 이동 필드(1–25, 기본값 3)가 나타납니다.
예시 — URL 매개변수 인코딩:
탭: URL | 모드: Encode
입력: https://example.com/search?q=hello world&lang=en
출력: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
예시 — Base64 JWT 페이로드 디코딩:
탭: Base64 | 모드: Decode
입력: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
출력: {"alg":"HS256","typ":"JWT"}
4단계: 결과 복사
출력 패널 오른쪽 상단의 Copy 버튼을 클릭하여 결과를 클립보드에 복사합니다. 도구는 복사 시 각 변환을 기록 패널(서포터 기능)에도 기록합니다.
5단계: 고급 작업에 압축 또는 16진 덤프 사용
Compression 탭은 독자적인 레이아웃을 가집니다. 알고리즘(GZip, Deflate, LZ-String UTF-16, LZ-String Base64)을 선택하고, 압축 또는 압축 해제 모드를 선택한 후, 입력을 붙여넣고 Compress/Decompress 버튼을 클릭합니다. GZip과 Deflate 압축의 경우 출력 형식으로 Base64 또는 Hex를 선택합니다. 압축 후 도구는 원본 바이트 수, 결과 바이트 수, 백분율 크기 감소를 표시합니다.
Hex Dump의 경우 텍스트 영역에 텍스트를 입력하거나 파일을 업로드합니다(파일 선택기는 선택 후 파일 이름과 바이트 수를 표시합니다). 행당 8, 16 또는 32바이트를 선택한 다음 Generate Dump를 클릭합니다. 출력은 xxd 형식을 따릅니다: 8자 16진 오프셋, 공백으로 구분된 16진 바이트, 인쇄 불가 문자를 .로 대체한 파이프 구분 ASCII 표현.
실용적인 예시
템플릿에서 HTML 출력 정제
이메일 템플릿을 만들고 사용자가 제공한 콘텐츠를 이스케이프해야 합니다. 인코딩 모드의 HTML 탭에 원본 문자열 <script>alert("xss")</script>를 붙여넣습니다. 출력: <script>alert("xss")</script>. 인코더는 &, <, >, ", ' 문자를 처리합니다.
Quoted-Printable 이메일 본문 디코딩
많은 이메일 클라이언트는 Quoted-Printable(é의 경우 =C3=A9)을 사용하여 비ASCII 문자를 인코딩합니다. 원본 QP 인코딩된 본문을 붙여넣고, 디코딩 모드에서 Quoted-Print. 탭으로 전환하면 즉시 읽을 수 있는 텍스트를 얻을 수 있습니다. 디코더는 소프트 줄 바꿈(=\n)과 =XX 이스케이프 시퀀스를 모두 처리합니다.
바이너리 파일의 원시 바이트 검사
작은 바이너리 파일을 Hex Dump 탭에 업로드하고 행당 16바이트로 덤프를 생성합니다. 출력은 파일의 바이트 오프셋, 16진 값, ASCII 표현을 나란히 표시합니다. 이는 터미널의 xxd가 생성하는 것과 동일한 보기이며 로컬 도구가 필요하지 않습니다.
팁과 모범 사례
HTML 디코딩은 완전하지 않습니다. HTML 디코더는 10개의 이름 있는 및 숫자 엔티티를 처리합니다: &, <, >, ", ', ', ', /, /, . 다른 이름 있는 엔티티(©나 é 등)는 변경 없이 통과됩니다. 완전한 HTML 엔티티 디코딩이 필요하다면 대신 콘텐츠를 <div> 요소에서 렌더링하세요.
ROT13과 Atbash는 자체 역원입니다. 변환을 두 번 적용하면 원본 텍스트가 반환됩니다. 별도의 디코딩 모드는 없으며 인코딩/디코딩 토글은 효과가 없습니다.
XOR 암호 출력에는 인쇄 불가 문자가 포함될 수 있습니다. XOR은 바이트 수준에서 작동하므로 XOR 인코딩의 출력은 종종 바이너리처럼 보입니다. 인쇄 가능한 결과가 필요하다면 XOR 출력을 두 번째 단계로 Base64 인코딩을 통해 실행하세요.
바이너리와 16진 인코딩은 공백으로 구분된 바이트를 사용합니다. Binary 탭은 문자당 하나의 8비트 바이너리 그룹을 공백으로 구분하여 생성합니다(01001000 01101001). Hex 탭은 두 문자 16진 쌍으로 동일하게 합니다(48 69). 디코딩할 때 도구는 공백으로 분리하므로 추가 공백은 허용됩니다.
Punycode 디코딩은 브라우저의 URL 파서를 사용합니다. 도구는 Punycode 입력에서 URL 객체를 구성하여 디코딩합니다. xn-- 접두사가 없는 도메인 레이블은 변경 없이 통과합니다.
일반적인 문제 및 문제 해결
"Invalid Base64 input" 오류: Base64 문자열은 표준 알파벳 문자(A-Z, a-z, 0-9, +, /)와 선택적 = 패딩을 사용해야 합니다. URL 안전 Base64(+와 / 대신 -와 _ 사용)는 이 오류를 발생시킵니다. 디코딩 전에 -를 +로, _를 /로 바꾸세요.
"Invalid URL-encoded input" 오류: URL 디코딩 함수는 decodeURIComponent를 호출하는데, 이는 잘못된 퍼센트 이스케이프 시퀀스(단독 % 또는 %GG 등)에서 예외를 발생시킵니다. 입력이 유효한 퍼센트 인코딩된 텍스트인지 확인하세요.
"Invalid UUencoded data: missing begin/end markers" 오류: UUencoded 데이터는 begin 644 filename 행으로 시작하고 백틱 행 다음에 end로 끝나야 합니다. 이러한 마커 없는 부분 페이로드는 실패합니다.
압축/압축 해제 실패: GZip/Deflate 압축 해제의 경우 도구는 Base64 대 16진 입력을 자동 감지합니다. 입력에 공백이 있고 패턴 [0-9a-fA-F ]+와 일치하면 16진으로, 그렇지 않으면 Base64로 처리됩니다. 입력 형식이 압축 시 사용한 것과 일치하는지 확인하세요.
XOR 또는 Vigenère 출력이 비어 있음: 둘 다 비어 있지 않은 암호 키가 필요합니다. 키를 입력할 때까지 출력 필드는 비어 있습니다.
개인 정보 보호 및 보안
Encoding Suite는 모든 변환을 브라우저에서 수행합니다. 입력 텍스트는 서버로 전송되지 않습니다. 압축 탭은 페이지 번들에서 한 번 로드된 JavaScript 모듈로 fflate와 lz-string을 동적으로 가져옵니다. 변환 시 외부 API 호출은 이루어지지 않습니다. XOR과 Vigenère의 암호 키는 세션 기간 동안만 브라우저 메모리에 존재합니다. 도구는 로드된 후 완전히 오프라인으로 작동합니다.
자주 묻는 질문
Encoding Suite는 무료인가요? 예. 17가지 인코딩 형식 모두 사용 제한 없이 무료입니다. 서포터 기능(프리셋, 기록, 배치 모드)은 Glyph Widgets 서포터 구독이 필요합니다.
오프라인에서 작동하나요? 예. 초기 페이지 로드(압축 라이브러리를 가져옴) 후 모든 변환은 네트워크 요청 없이 브라우저 메모리에서 완전히 실행됩니다.
내 데이터는 안전한가요? 모든 텍스트 처리는 클라이언트 측에서 이루어집니다. 서버로는 아무것도 전송되지 않습니다. 이로써 Encoding Suite는 내부 토큰, 설정 값 및 기타 민감한 문자열 디코딩에 적합합니다.
Base64 인코딩과 URL 인코딩의 차이점은 무엇인가요? Base64는 표준 알파벳을 사용하여 바이너리 데이터를 64개의 인쇄 가능한 ASCII 문자 문자열로 변환하며, 입력보다 약 33% 큰 출력을 생성합니다. URL 인코딩(퍼센트 인코딩)은 URL에서 예약되었거나 안전하지 않은 문자를 %XX 16진수 시퀀스로 변환합니다. 바이너리 콘텐츠(이미지, 토큰, 페이로드)를 인코딩할 때는 Base64를 사용하고, 쿼리 문자열 값에는 URL 인코딩을 사용하세요.
도구가 Base64에서 Unicode 텍스트를 처리할 수 있나요? 예. Base64 인코더는 btoa에 전달하기 전에 UTF-8 바이트 시퀀스를 문자열로 변환하기 위해 encodeURIComponent 다음에 unescape를 사용합니다. 이는 이모지와 CJK 텍스트를 포함한 멀티바이트 문자를 처리합니다. 디코더는 이 과정을 역전합니다.
스왑 버튼은 무엇을 하나요? Encode와 Decode 레이블 사이의 화살표 버튼을 클릭하면 현재 출력이 입력 필드로 교환되고 모드가 전환됩니다. 이를 통해 값을 인코딩한 다음 디코딩하는 것이 무손실임을 즉시 확인할 수 있습니다.
보안 목적으로 적합한 암호 형식은 무엇인가요? 고전 암호(시저, Vigenère, Atbash, ROT13) 중 어느 것도 의미 있는 암호화 보안을 제공하지 않습니다. XOR은 키가 진정으로 무작위이고 평문과 최소한 같은 길이인 경우에만 일회용 패드로 사용할 수 있습니다. 실제 암호화를 위해서는 대신 AES Encryption 도구를 사용하세요.
압축 비율 표시기는 어떻게 작동하나요? GZip과 Deflate 압축의 경우 도구는 입력의 원본 UTF-8 바이트 수를 압축된 바이너리 결과의 바이트 수와 비교합니다. 표시된 백분율은 감소율입니다: (1 - compressedBytes / originalBytes) × 100. LZ-String 변형은 원본 바이트 수를 인코딩된 문자열 길이와 비교하는데, 출력이 원시 바이트가 아닌 문자열이기 때문에 감소율이 적게 표시될 수 있습니다.
압축 또는 16진 덤프 탭을 통해 배치 처리할 수 있나요? 아니요. 배치 모드는 모든 표준 인코딩 탭(Base64부터 UUencode까지)에서 사용할 수 있지만, 별도의 다중 필드 인터페이스를 가진 Compression 또는 Hex Dump에서는 사용할 수 없습니다.
바이너리 인코딩이 U+00FF 이상의 Unicode 문자를 지원하나요? 바이너리 인코더는 charCodeAt을 사용하여 각 문자를 8비트 그룹에 매핑합니다. 즉, 코드 포인트 255 이상의 문자는 8비트를 초과하는 값을 생성합니다. 전체 Unicode 텍스트의 정확한 바이너리 표현을 위해서는 대신 Unicode 이스케이프 탭을 사용하거나, Unicode Code Point Inspector에서 UTF-8 바이트 인코딩을 검사하세요.
관련 도구
- Base64 Encoder/Decoder — URL 안전 알파벳 및 파일에서 Base64로 변환을 포함한 추가 옵션이 있는 Base64 전용 도구.
- Hash Suite — 텍스트 또는 파일에서 MD5, SHA-256, BLAKE3, HMAC 다이제스트를 생성합니다.
- JWT Decoder — Base64url로 인코딩된 JSON Web Tokens를 디코딩하고 검사합니다.
지금 Encoding Suite 사용해 보기: Encoding Suite