Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用atob()方法时出现无效字符错误_Javascript_Internet Explorer 10 - Fatal编程技术网

Javascript 使用atob()方法时出现无效字符错误

Javascript 使用atob()方法时出现无效字符错误,javascript,internet-explorer-10,Javascript,Internet Explorer 10,我在stack overflow中读到一个问题,该代码在IE10中工作,但在ie9中不工作 但我仍然面临这个问题 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)

我在stack overflow中读到一个问题,该代码在IE10中工作,但在ie9中不工作

但我仍然面临这个问题

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");
var image=canvas.toDataURL();
image=image.replace(/^data:[a-z]*;,/,'');
var byteString=atob(图像);
var buffer=newarraybuffer(byteString.length);
var intArray=新的Uint8Array(缓冲区);
for(var i=0;i
转换atob(图像)时,会引发异常 0x800a139e-JavaScript运行时错误:InvalidCharacterError 我尝试了几件事,但都没用

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

数据:图像/png;base64,一个城市的一个社区的一个社区的一个社区的一个社区的一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区的一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一个社区一7/c3yxwAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa= 请帮帮我。。 提前感谢。

1)您的base64编码字符串可能不是完全有效的。您可以尝试使用此代码而不是
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;
};
var decodeBase64=函数{
变量e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,l=s.length;
var A=“abcdefghijklmnopqrstuvxyzabefghijklmnopqrstuvxyzo123456789+/”;

对于(i=0;i(l-=8))&0xff)| |(x如果有人达到了这个值,那么
image=image.replace(/^[^,]+,/,'')
解决方案对他们不起作用,我在IE11中调用
atob
函数时会遇到同样的错误

在我的例子中,导致错误的原因是base64字符串有一个回车符,每个回车符返回76个字符

这对于Chrome或Firefox来说不是问题,但IE11产生了
InvalidCharacterError


b64Data=b64Data.replace(/\r\n/g'')
解决了我的问题。

在这个字符串中,我只是删除了这个,它对我来说很有用。.数据:image/png;base64,非常感谢你。.这太好了。.是的,我知道blob不受IE 9及以下版本的支持。我们对IE 9及以下版本还有其他选择吗?@Srinivasan这就是
image=image.replace(/^[^,]+,/,'');
正在做的事情