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

使用Javascript的atob解码base64不能正确解码utf-8字符串

使用Javascript的atob解码base64不能正确解码utf-8字符串

Smart猫小萌 2019-08-16 15:55:49
使用Javascript的atob解码base64不能正确解码utf-8字符串我正在使用Javascript window.atob()函数来解码base64编码的字符串(特别是GitHub API中的base64编码内容)。问题是我得到了ASCII编码的字符(â¢而不是™)。如何正确处理传入的base64编码流,以便将其解码为utf-8?
查看完整描述

3 回答

?
一只名叫tom的猫

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

如果将字符串视为字节更多是你的事情,你可以使用以下函数


function u_atob(ascii) {

    return Uint8Array.from(atob(ascii), c => c.charCodeAt(0));

}


function u_btoa(buffer) {

    var binary = [];

    var bytes = new Uint8Array(buffer);

    for (var i = 0, il = bytes.byteLength; i < il; i++) {

        binary.push(String.fromCharCode(bytes[i]));

    }

    return btoa(binary.join(''));

}



// example, it works also with astral plane characters such as '?'

var encodedString = new TextEncoder().encode('✓');

var base64String = u_btoa(encodedString);

console.log('✓' === new TextDecoder().decode(u_atob(base64String)))


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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