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)));
}