문자열 인코딩/디코딩

모성종·2022년 8월 17일
0

base64 인코딩/디코딩

WebAPI에는 기본적으로 문자열을 base64로 인코딩/디코딩할 수 있는 함수가 제공된다.

btoa / atob

btoa

ASCII 문자열을 base64로 인코딩한다.

const str = 'hello world';
const encodedData = btoa(str);

atob

base64로 인코딩된 데이터를 ASCII 문자열로 디코딩한다.

const str = 'hello world';
const encodedData = btoa(str);
const decodedData = atob(encodedData);

URI 인코딩/디코딩

encodeURI / decodeURI

URI의 특정한 문자를 UTF-8로 인코딩/디코딩한다.
encodeURI는 예약문자는 인코딩하지 않는다.

  이스케이프 하지 않는 문자:
  A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #

위 문자는 예약문자로써 encodeURI API를 사용해도 인코딩되지 않는다.

var str1 = ";,/?:@&=+$#"; // 예약문자
var str2 = "-_.!~&*'()"; // 비예약문자
var str3 = "ABC abc 123"; // 알파벳, 숫자, 공백

console.log(encodeURI(str1)); // ;,/?:@&=+$# (인코딩하지 않음)
console.log(encodeURI(str2)); // -_.!~&*'() (인코딩하지 않음)
console.log(encodeURI(str3)); // ABC%20abc%20123 (공백은 %20으로 인코딩)

encodeURIComponent / decodeURIComponent

encodeURI와 마찬가지로 URI의 특정한 문자를 UTF-8로 인코딩/디코딩한다.
encodeURIComponent는 encodeURI에서 uri를 구성하는 문자까지 인코딩한다.

  이스케이프 하지 않는 문자:
  A-Z a-z 0-9 - _ . ! ~ * ' ( )
var set1 = ";,/?:@&=+$";  // 예약문자
var set2 = "-_.!~*'()";   // 비예약문자
var set3 = "#";           // 숫자 기호
var set4 = "ABC abc 123"; // 알파벳, 숫자, 공백

console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodeURIComponent(set2)); // -_.!~*'()
console.log(encodeURIComponent(set3)); // %23
console.log(encodeURIComponent(set4)); // ABC%20abc%20123

escape / unescape

ASCII문자가 아닌 문자는 유니코드 형식으로 치환한다.
잘 쓰지 않는 API

profile
FE Developer

0개의 댓글