php base64_decode在javascript中等效

时间:2018-03-24 11:45:00

标签: javascript php base64 equivalent

我需要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()一样解码...

0 个答案:

没有答案