btoa() 전역 함수
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
btoa()
메서드는 문자열의 각 문자가 이진 데이터의 바이트 단위로 처리되는 이진 문자열을 Base64로 인코딩한 ASCII 문자열을 생성합니다.
이 메서드를 사용하여 통신 문제를 일으킬 수 있는 데이터를 인코딩하고 전송한 다음, atob()
메서드를 이용하여 데이터를 다시 디코딩할 수 있습니다. 예를 들어 0부터 31까지의 ASCII 값과 같은 제어 문자를 인코딩할 수 있습니다.
문법
btoa(stringToEncode)
매개변수
stringToEncode
-
인코딩할 이진 문자열입니다.
반환 값
stringToEncode
의 Base64 표현을 포함하는 ASCII 문자열입니다.
예외
InvalidCharacterError
DOMException
-
문자열에 단일 바이트가 아닌 문자가 포함되어 있을 때 발생합니다. 자세한 내용은 아래의 "유니코드 문자열"을 참조하세요.
예제
const encodedData = btoa("Hello, world"); // 문자열을 인코딩합니다.
const decodedData = atob(encodedData); // 문자열을 디코딩합니다.
유니코드 문자열
Base64는 설계상 이진 데이터를 입력으로 기대합니다. JavaScript 문자열의 경우, 이는 각 문자의 코드 포인트가 1바이트만 차지하는 문자열을 의미합니다. 따라서 1바이트 이상을 차지하는 문자가 포함된 문자열을 btoa()
에 전달하면 이진 데이터로 간주하지 않으므로 오류가 발생합니다.
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