当前位置: 首页 > 知识库问答 >
问题:

使用“atob”命令时出错-未能在“窗口”上执行“atob”:要解码的字符串编码不正确

严峰
2023-03-14

我需要解码成PDF文件的Base64字符串。我使用这个代码。但是window.atob命令总是报告错误:在窗口上执行“atob”失败:要解码的字符串没有正确编码。

我知道该文件是正确的,因为我已经使用一个将base64解码为pdf的网站对其进行了解码。我不知道它是否有用,但我们正在使用Aurelia框架。

转换函数

function converBase64toBlob(content, contentType) {
        contentType = contentType || '';
        var sliceSize = 512;
        var byteCharacters = window.atob(content); //method which converts base64 to binary
        var byteArrays = [
        ];
        for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
            var slice = byteCharacters.slice(offset, offset + sliceSize);
            var byteNumbers = new Array(slice.length);
            for (var i = 0; i < slice.length; i++) {
                byteNumbers[i] = slice.charCodeAt(i);
            }
            var byteArray = new Uint8Array(byteNumbers);
            byteArrays.push(byteArray);
        }
        var blob = new Blob(byteArrays, {
            type: contentType
        }); //statement which creates the blob
        return blob;
    }

函数的调用

self.blob = self.converBase64toBlob(result.contents[0].pdf.replace(/^[^,]+,/, ''), 'application/pdf');
                self.blobURL = URL.createObjectURL(blob);
                window.open(this.blobURL);

共有1个答案

阙星渊
2023-03-14

我找到了解决办法。Api返回了带有字符\的bas64字符串。所以我删除了所有这些,它工作得很好。

 类似资料:
  • 问题内容: 这是我的Javascript代码 这是我的HTML 我遇到错误 错误:无法在“窗口”上执行“ atob”:要解码的字符串未正确编码 问题答案: 我有我的问题。这对于其他用户使用javascript(AnguarJs)保存图像和压缩图像应该会有所帮助。 我正在流动此链接以压缩图像 Github https://github.com/oukan/angular-image- compres

  • 问题内容: 我正在使用Javascript 函数解码base64编码的字符串(特别是来自GitHubAPI的base64编码的内容)。问题是我回来了ASCII编码的字符(而不是)。如何正确处理传入的以base64编码的流,以便将其解码为utf-8? 问题答案: 此问题: “ Unicode问题”由于s是16位编码的字符串,因此在大多数浏览器中,如果字符超出8位字节的范围(0x00〜0xFF),则调

  • 我正在使用Javascript函数来解码一个base64编码的字符串(特别是GitHub API中base64编码的内容)。问题是我得到了ASCII编码的字符(像而不是)。如何正确处理传入的base64编码的流,以便将其解码为UTF-8?

  • 当用户按下ctrl键时,我试图在Chrome中保存HTML文件,但Chrome崩溃了。 (我只想下载HTML文件的源代码) 我读到它发生是因为我的文件比1.99M大... 在第一次尝试中(在我知道Chrome崩溃之前): 第二次尝试,在我读到崩溃后,我使用了: 这里我得到了错误: 我不知道,但我读到我需要将我的字符串编码为base 64:如何在JavaScript中将字符串编码为Base64? 有

  • 我正在接收一个zip文件的内容(从一个API)作为一个base64编码的字符串。 如果我将该字符串粘贴到Notepad++中并执行 插件>MIME工具>Base64解码 生成类似的内容,但某些字符的解码方式不同(因此成为无效的zip文件)。其他方法抛出无效的URI错误。 如何在JavaScript中再现Notepad++行为?

  • 问题内容: 根据我的测试,标题中的错误仅在Google Chrome中引发。我正在对一个大的XML文件进行base64编码,以便可以下载它: 隐藏的iframe。 这个错误实际上是一个很大的变化,因为通常,谷歌浏览器会在通话时崩溃。Mozilla Firefox在这里没有问题,因此问题与浏览器有关。我不知道文件中有任何奇怪的字符。实际上,我确实相信没有非ASCII字符。 问: 如何找到有问题的字符