首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过JavaScript进行Base64URL解码?

通过JavaScript进行Base64URL解码?
EN

Stack Overflow用户
提问于 2011-03-08 23:33:16
回答 3查看 32.9K关注 0票数 12

所以我被难住了。我知道有很多针对JS的Base64编码器/解码器,但不是针对修改过的(也是Facebook青睐的) Base64URL变体。到目前为止,在stackoverflow上的搜索还没有结果。

是的,我可以使用PHP或其他服务器端库来解码,但无论我使用的是什么平台,我都会努力保持这种通用性……例如,如果我在AmazonS3/CloudFront上托管一个纯HTML的Facebook应用程序,并且只使用他们的JS和jQuery来处理表单和获取数据。

也就是说,有没有人知道针对JavaScript的Base64URL特定解码器?

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2018-08-14 17:51:29

在解码前使用此命令:

代码语言:javascript
运行
复制
var decode = function(input) {
        // Replace non-url compatible chars with base64 standard chars
        input = input
            .replace(/-/g, '+')
            .replace(/_/g, '/');

        // Pad out with standard base64 required padding characters
        var pad = input.length % 4;
        if(pad) {
          if(pad === 1) {
            throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding');
          }
          input += new Array(5-pad).join('=');
        }

        return input;
    }

使用此函数后,您可以使用任何base64解码器

票数 22
EN

Stack Overflow用户

发布于 2011-03-08 23:51:15

解决方案:

代码语言:javascript
运行
复制
var b64str = base64.encode('foo bar');

// fix padding according to the new format
b64str = b64str.padRight(b64str.length + (4 - b64str.length % 4) % 4, '=');

使用这个伟大的base64编码/解码:http://code.google.com/p/stringencoders/source/browse/trunk/javascript/base64.js

还取决于padRight方法:

代码语言:javascript
运行
复制
String.prototype.padRight = function(n, pad){
    t = this;
    if(n > this.length)
        for(i = 0; i < n-this.length; i++)
            t += pad;
    return t;
}
票数 4
EN

Stack Overflow用户

发布于 2011-03-08 23:45:16

代码语言:javascript
运行
复制
var str = "string";
var encoded = btoa(str); // encode a string (base64)
var decoded = atob(encoded); //decode the string 
alert( ["string base64 encoded:",encoded,"\r\n", "string base64 decoded:",decoded].join('') );
票数 -7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5234581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档