使用atob()方法时出现无效的字符错误 [英] Invalid character error while using atob() method

查看:1301
本文介绍了使用atob()方法时出现无效的字符错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在IE 10中读了一个堆栈溢出的问题,这个代码在IE 10中工作但在ie9中不起作用,

I have read a question in stack overflow with this code work in IE 10 but not work in ie9,

但我仍然面临着这个问题。

but still i am facing issue on this.

var image = canvas.toDataURL();
image = image.replace(/^data:[a-z]*;,/, '');
var byteString = atob(image);
var buffer = new ArrayBuffer(byteString.length);
var intArray = new Uint8Array(buffer);
for (var i = 0; i < byteString.length; i++) {
    intArray[i] = byteString.charCodeAt(i);
}
blob = new Blob([buffer], {type: "image/png"});
window.navigator.msSaveOrOpenBlob(blob, "test.png");

转换atob(图像)时抛出异常
0x800a139e - JavaScript运行时错误:InvalidCharacterError
i尝试了几件事,但没有任何作用......

while converting atob(image) it throw an exception 0x800a139e - JavaScript runtime error: InvalidCharacterError i tried several things but nothing works...

我在图像变量中得到了这个

i got this in image variable

数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAGQCAYAAAA9XmC5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABJFSURBVHhe7dvPa5x3fsDxeaR0l3UO9dLuSnJLE3rpzc6pp0KUQ2MLL8Xk1BZWt + 7BhmKaGYctfKR3ng8vjyZTE6W5St98PZnF9ZO / NeZsiyWt0 + C // RUWQBHxIkQjlBGsEx7Eb / 7ZbqQF23zz22vvf + L6 + F / Um4BQDeNRqPtvMoy194TQsc5EcIRatv2SZnmY9L1HOOUuDPdADpJCOEIRfQex7BaviCzkXsRxwc5At3kyzJwxMoXZmZfdLnZ7 / c3yxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvkF6vf8DAs32KwowBEUAAAAASUVORK5CYII =
请帮帮我..预先
谢谢..

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAGQCAYAAAA9XmC5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABJFSURBVHhe7dvPa5x3fsDxeaR0l3UO9dLuSnJLE3rpzc6pp0KUQ2MLL8Xk1BZWt+7BhmKaGYctfKR3ng8vjyZTE6W5St98PZnF9ZO/NeZsiyWt0+c//RUWQBHxIkQjlBGsEx7Eb/7ZbqQF23zz22vvf+L6+f/Um4BQDeNRqPtvMoy194TQsc5EcIRatv2SZnmY9L1HOOUuDPdADpJCOEIRfQex7BaviCzkXsRxwc5At3kyzJwxMoXZmZfdLnZ7/c3yxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvkF6vf8DAs32KwowBEUAAAAASUVORK5CYII= please help me.. Thanks in advance..

推荐答案

1)你的base64编码字符串可能不完全有效。您可以尝试使用此代码而不是 atob

1) your base64 encoded string probably is not fully valid. you can try to use this code instead of atob

var decodeBase64 = function(s) {
    var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length;
    var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    for(i=0;i<64;i++){e[A.charAt(i)]=i;}
    for(x=0;x<L;x++){
        c=e[s.charAt(x)];b=(b<<6)+c;l+=6;
        while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
    }
    return r;
};

2)我认为它应该是 image = image.replace(/ ^ [^,] +,/,'');

2) I think it should be image = image.replace(/^[^,]+,/, '');

3)据我所知,支持 Blob 从版本10开始 - https ://developer.mozilla.org/en-US/docs/Web/API/Blob

3) As far as I know, support of the Blob in IE starts from version 10 - https://developer.mozilla.org/en-US/docs/Web/API/Blob

这篇关于使用atob()方法时出现无效的字符错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆