Javascript btoa String contains an invalid character

Javascript btoa String contains an invalid character

前言

读此篇文章时必需要俱备Javascript的使用基础,其文章主要记录一些小技巧或语法快速使用,有不能理解之处请下留言处留言。

问题

将JSON使用btoa转成base64编码时发生错误InvalidCharacterError: String contains an invalid character 这问题发生在转换时提供的内容不能有换行符号,不然造成转换失败或中断,除了删除它之外,可以使用2指令,第1个unescape除理关键字元外,再使用encodeURIComponent将特殊字编码成URI格式就能顺利转换成base64,之后再利用decodeURIComponent、escape反转回来后再传入atob解出真正的JSON,其功能写成functon

// UTF-8 string to base64 encoded ascii
function utf8_to_base64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}
// base64 encoded ascii to UTF-8 string
function base64_to_utf8(str) {
    return decodeURIComponent(escape(window.atob(str)));
}