为了账号安全,请及时绑定邮箱和手机立即绑定

无法在“窗口”上执行“ btoa”:要编码的字符串包含Latin1范围之外的字符。

无法在“窗口”上执行“ btoa”:要编码的字符串包含Latin1范围之外的字符。

弑天下 2019-11-25 14:49:40
根据我的测试,标题中的错误仅在Google Chrome中引发。我正在对一个大的XML文件进行base64编码,以便可以下载它:this.loader.src = "data:application/x-forcedownload;base64,"+                  btoa("<?xml version=\"1.0\" encoding=\"utf-8\"?>"                  +"<"+this.gamesave.tagName+">"                  +this.xml.firstChild.innerHTML                  +"</"+this.gamesave.tagName+">");this.loader 隐藏的iframe。这个错误实际上是一个很大的变化,因为通常,谷歌浏览器会在btoa通话时崩溃。Mozilla Firefox在这里没有问题,因此问题与浏览器有关。我不知道文件中有任何奇怪的字符。实际上,我确实相信没有非ASCII字符。问: 如何找到有问题的字符并替换它们,以使Chrome不再抱怨?我试图使用Downloadify来启动下载,但是它不起作用。这是不可靠的,不会抛出任何错误以进行调试。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

使用btoa与unescape和encodeURIComponent我没有工作。用XML / HTML实体替换所有特殊字符,然后转换为base64表示形式是为我解决此问题的唯一方法。一些代码:


base64 = btoa(str.replace(/[\u00A0-\u2666]/g, function(c) {

    return '&#' + c.charCodeAt(0) + ';';

}));


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 607 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号