파일 업로드
  1. base64hub
  2. 텍스트 도구
  3. XML을 Base64로

XML을 Base64로: XML 문서 인코딩

XML 문서를 붙여넣으면 Base64를 받습니다. 받는 쪽 파서가 내가 쓴 것과 같은 문자를 읽도록, 문서의 encoding 선언과 맞는 문자 인코딩을 고르세요.

무료 가입 없음, 제한 없음 로컬 업로드 없음 업데이트 2026. 10. 27.
입력 0 B출력 0 B크기 –

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

XML을 Base64로 인코딩하는 방법

  1. 입력 · 텍스트에 XML 문서를 붙여넣거나 예시를 눌러 작은 문서를 불러오세요.
  2. 문자 인코딩을 XML 선언에 적힌 인코딩으로 설정하세요. UTF-8이 미리 선택되어 있으며 대부분의 문서에 맞습니다.
  3. 출력 · Base64에서 결과를 복사하세요. JSON과 HTTP 필드에는 줄 바꿈을 없음으로 두세요. 일부 XML 기반 프로토콜은 76자 줄을 받습니다.
  4. 다운로드는 Base64를 base64.txt로 저장합니다.

XML 선언 뒤에 <note> 요소가 오는 예시는 PD94bWwg로 시작하는 문자열로 인코딩됩니다. 이것은 <?xml 의 Base64입니다. 선언이 있는 XML 문서는 거의 모두 이렇게 시작하므로, 인코딩된 XML은 알아보기 쉽습니다. Base64를 XML로가 다시 디코딩합니다.

문자 인코딩을 XML 선언에 맞추기

XML 파서는 선언의 encoding 속성(또는 바이트 순서 표시)으로 바이트를 어떻게 읽을지 정합니다. 바이트와 선언이 맞지 않으면 받는 쪽은 내가 쓴 것과 다른 문자를 읽습니다.

문서여기서 쓴 문자 인코딩Base64파서가 읽는 내용
<?xml version="1.0" encoding="ISO-8859-1"?><n>café</n>ISO-8859-1PD94bWwg...PjxuPmNhZuk8L24+café
같은 문서UTF-8PD94bWwg...PjxuPmNhZsOpPC9uPg==café

두 번째 행은 연동에서 흔한 버그입니다. 텍스트는 UTF-8로 저장했는데 선언은 여전히 Latin-1입니다. EUC-KR로 선언된 한국어 문서를 UTF-8로 인코딩해도 같은 식으로 한글이 깨집니다. 여기서 선언된 문자 인코딩을 고르거나, 더 좋게는 선언을 UTF-8로 바꾸고 모든 곳에서 UTF-8을 쓰세요.

XML이 Base64로 오가는 곳

  • XML 문서 전체를 JSON이나 XML 필드 안에 받는 SOAP과 REST API. 꺾쇠괄호와 따옴표를 이스케이프할 필요가 없습니다. 전자 세금계산서와 EDI 서비스는 송장(예: UBL 문서)을 흔히 이렇게 받습니다.
  • SAML 싱글 사인온. SAML 응답은 Base64로 인코딩되어 브라우저가 전송하는 XML 문서입니다. SAML 디코더가 SAMLResponse와 SAMLRequest 값을 다시 XML로 바꿉니다.
  • 설정과 시크릿. 환경 변수나 Kubernetes Secret에 저장하는 XML 설정 파일은 한 줄에 들어가도록 Base64로 만듭니다.

문서에 디지털 서명(SAML과 많은 전자 세금계산서 방식이 쓰는 XML-DSig)이 있다면, 받았거나 만든 바이트를 정확히 그대로 인코딩하세요. 들여쓰기를 다시 하거나, 줄 끝을 바꾸거나, 편집기에서 다시 저장하면 XML의 의미는 같아도 서명이 무효가 될 수 있습니다.

크기와 줄 바꿈

Base64는 문서에 약 33%를 더합니다. XML은 원래 장황하므로 큰 문서는 인코딩 전에 gzip으로 압축하는 경우가 많습니다. gzip과 Base64 도구가 두 단계를 모두 처리합니다. 76자 줄 바꿈은 MIME 기반 전송과 대부분의 XML Schema 검사기가 xs:base64Binary 내용으로 받아들입니다. JSON 기반 API는 보통 끊김 없는 한 줄을 기대합니다.

코드에서 XML을 Base64로

선언과 바이트가 어긋나지 않도록 파일을 바이트로 읽어 그대로 인코딩하세요.

import base64

with open("invoice.xml", "rb") as f:
    b64 = base64.b64encode(f.read()).decode("ascii")
// Node.js
const fs = require("fs");
const b64 = fs.readFileSync("invoice.xml").toString("base64");

Linux에서는 base64 -w 0 invoice.xml이 같은 한 줄을 출력합니다. 큰 파일의 스트리밍은 Python에서 Base64와 Node.js에서 Base64를 참고하세요.

자주 묻는 질문

XML 파일을 Base64로 변환하려면 어떻게 하나요?

위에 XML을 붙여넣고 결과를 복사하세요. 파일이라면 텍스트를 다시 입력하지 말고 원본 바이트를 인코딩하세요. Python에서는 base64.b64encode(open("doc.xml", "rb").read()), Linux에서는 base64 -w 0 doc.xml입니다.

XML에는 어떤 문자 인코딩을 골라야 하나요?

XML 선언에 적힌 것입니다. <?xml version="1.0" encoding="UTF-8"?>이거나 encoding 속성이 없으면 기본값인 UTF-8입니다. ISO-8859-1이나 Windows-1252(한국어 문서라면 EUC-KR)라고 되어 있으면 그것을 고르거나, 선언을 UTF-8로 바꾸세요.

인코딩 전에 XML 서식을 바꿔도 되나요?

정확한 바이트에 의존하는 것이 없을 때만 됩니다. 들여쓰기만 바뀌어도 Base64가 달라지고, 서명된 XML(SAML 어설션, 서명된 세금계산서)에서는 서명이 깨질 수 있습니다.

xs:base64Binary는 어디에 해당하나요?

이 XML Schema 타입은 반대 경우입니다. XML 요소 안에 Base64를 넣는 것으로, SOAP 메시지와 세금계산서에 파일을 넣을 때 씁니다. 파일을 Base64로로 파일을 인코딩하고 결과를 요소에 붙여넣으세요.