我需要javascript中的确切base64_decode()等价物。我做了很多研究,但遇到了一些问题。
我不能使用javascripts atob(),因为某些原因,它只返回一个 完成不同的结果,如phps base64_decode()。
然后我在此页面上找到了一个特殊的解码功能:https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
function Base64Decode(str, encoding = 'utf-8') {
var bytes = base64js.toByteArray(str);
return new (TextDecoder || TextDecoderLite)(encoding).decode(bytes);
}
function Base64Encode(str, encoding = 'utf-8') {
var bytes = new (TextEncoder || TextEncoderLite)(encoding).encode(str);
return base64js.fromByteArray(bytes);
}
这确实给出了与php函数base64_decode()相同的结果,但不幸的是,你无法逆转它。
所以在php中你可以做base64_encode(base64_decode( 'BASE_64_ENCODED_STRING' ))
你会收回原来的BASE_64_ENCODED_STRING
但在Javascript中
Base64Encode(Base64Decode( 'BASE_64_ENCODED_STRING' ))
不会给你原来的BASE_64_ENCODED_STRING,但我需要能够做到这一点。我发现,这可能是由于某些UTF-8编码问题造成的。
有趣的是btoa(atob( 'BASE_64_ENCODED_STRING' ))
会让我回到原来的BASE_64_ENCODED_STRING,但正如我上面提到的,它不会像phps base64_decode()一样解码...