"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Javascript의 `atob`이 UTF-8 base64 문자열을 제대로 디코딩하지 못하는 이유는 무엇입니까?

Javascript의 `atob`이 UTF-8 base64 문자열을 제대로 디코딩하지 못하는 이유는 무엇입니까?

2024-11-09에 게시됨
검색:228

Why does Javascript\'s `atob` fail to decode UTF-8 base64 strings properly?

Javascript의 atob을 사용하여 base64를 디코딩하면 utf-8 문자열이 제대로 디코딩되지 않습니다.

Javascript의 atob은 인코딩된 base64 문자열을 올바르게 디코딩할 수 있습니다. 예를 들어, window.atob('YQ==')는 ASCII 문자를 사용하여 ASCII 문자 'a'를 반환합니다. 그러나 UTF-8 유니코드 문자로 인코딩된 base64 문자열은 제대로 디코딩되지 않습니다. 예를 들어 window.atob('4pyTIMOgIGxhIG1vZGU=')는 '✓ à la mode' 대신 '⢠à la mode'를 반환합니다. .

UTF-8로 인코딩된 base64 문자열을 올바르게 디코딩하려면 이스케이프 및 이스케이프 해제 기능을 사용해야 합니다. 이 경우 window.atob(unescape(encodeURIComponent('✓ à la mode')))는 '4pyTIMOgIGxhIG1vZGU='를 반환하고 window.atob('4pyTIMOgIGxhIG1vZGU=')는 '✓ à la 모드'를 반환합니다.

들어오는 base64로 인코딩된 스트림을 처리하여 utf-8로 디코딩되도록 하는 또 다른 옵션 TextDecoder 클래스를 사용하는 것입니다. 이 클래스는 base64로 인코딩된 문자열을 UTF-8 문자열로 디코딩하는 방법을 제공합니다. 사용 방법의 예는 다음과 같습니다.

const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3