如何在JavaScript中将字符串编码为Base64?

1218

我有一个可以将PNG图像编码为Base64字符串的PHP脚本。

我想使用JavaScript完成同样的事情。我知道如何打开文件,但是不确定如何进行编码。我不习惯处理二进制数据。


2
以下是使用JavaScript进行base64编码和解码的最佳方法。请参见下面的链接。 http://phpjs.org/functions/base64_encode:358 http://phpjs.org/functions/base64_decode:357 - gautamlakum
这是另一个 jQuery 插件用于 Base64 编码/解码:http://archive.plugins.jquery.com/project/base64 - zahid9i
请检查Microjs: http://microjs.com/#base64 - Vinod Srivastav
参考元问题 *基本相同的答案-唯一的区别:错误的更正*。 - Peter Mortensen
33个回答

0

-1

如果有人想在Typescript中将字符串编码为base64

我修改了Peter Mortensen的答案并添加了类型(在需要的地方)

const Base64 = {


_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

// added type string to input
encode: function(input: string) {
    let output = "";
    let chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    let i = 0;

    input = Base64._utf8_encode(input);

    while (i < input.length) {

        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
            enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
            enc4 = 64;
        }

        output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

    }

    return output;
},
// added type string to input
_utf8_encode: function(input: string) {
    input= input.replace(/\r\n/g, "\n");
    let utftext = "";

    for (let n = 0; n < input.length; n++) {

        let c = input.charCodeAt(n);

        if (c < 128) {
            utftext += String.fromCharCode(c);
        }
        else if ((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
        }
        else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
        }

    }

    return utftext;
  },
}
 
// function that consumes that Base64.encode function
const encode = ( cipher : string) => {

  const encodedString: string = Base64.encode(cipher)

  return encodedString;
}

console.log(encode('Hello World!'))

jsfiddle链接


-3
如果您想快速轻松地编码base64而不必担心可能的兼容性问题,可以使用turbocommons库。只需下载压缩后的js文件并编写以下代码即可:
<script src="../yourpathtothelibrary/turbocommons-es5.js"></script>

<script>
    var ConversionUtils = org_turbocommons.ConversionUtils;

    ConversionUtils.stringToBase64('hello');
</script>

您可以在此处查看库中的代码以了解其实现方式:

https://github.com/edertone/TurboCommons/blob/master/TurboCommons-TS/src/main/ts/utils/ConversionUtils.ts

更多信息请参见此处:

https://turboframework.org/en/blog/2022-10-26/encode-decode-base64-strings-javascript-typescript-php

你可以在这里在线测试它:

https://turboframework.org/en/app/stringutils/base64-encode


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接