btoa() 전역 함수

btoa() 메서드는 문자열의 각 문자가 이진 데이터의 바이트 단위로 처리되는 이진 문자열을 Base64로 인코딩한 ASCII 문자열을 생성합니다.

이 메서드를 사용하여 통신 문제를 일으킬 수 있는 데이터를 인코딩하고 전송한 다음, atob() 메서드를 이용하여 데이터를 다시 디코딩할 수 있습니다. 예를 들어 0부터 31까지의 ASCII 값과 같은 제어 문자를 인코딩할 수 있습니다.

문법

js
btoa(stringToEncode)

매개변수

stringToEncode

인코딩할 이진 문자열입니다.

반환 값

stringToEncode의 Base64 표현을 포함하는 ASCII 문자열입니다.

예외

InvalidCharacterError DOMException (en-US)

문자열에 단일 바이트가 아닌 문자가 포함되어 있을 때 발생합니다. 자세한 내용은 아래의 "유니코드 문자열"을 참조하세요.

예제

js
const encodedData = btoa("Hello, world"); // 문자열을 인코딩합니다.
const decodedData = atob(encodedData); // 문자열을 디코딩합니다.

유니코드 문자열

Base64는 설계상 이진 데이터를 입력으로 기대합니다. JavaScript 문자열의 경우, 이는 각 문자의 코드 포인트가 1바이트만 차지하는 문자열을 의미합니다. 따라서 1바이트 이상을 차지하는 문자가 포함된 문자열을 btoa()에 전달하면 이진 데이터로 간주하지 않으므로 오류가 발생합니다.

js
const ok = "a";
console.log(ok.codePointAt(0).toString(16)); // 61은 1바이트 미만입니다.

const notOK = "✓";
console.log(notOK.codePointAt(0).toString(16)); // 2713은 1바이트 이상을 차지합니다.

console.log(btoa(ok)); // YQ==
console.log(btoa(notOK)); // error

임의의 유니코드 텍스트를 처리할 때, 이 제한을 해결하는 방법은 Base64 용어집 항목의 "유니코드 문제" 섹션을 참조하세요.

명세서

Specification
HTML Standard
# dom-btoa-dev

브라우저 호환성

BCD tables only load in the browser

같이 보기