From c16ac714160aceabd5f404b2f4be6c90369d0a49 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 13 Aug 2015 12:58:44 +0200 Subject: [PATCH] Fix base64.encode/decode for unicode characters - use fallback if btoa/atob functions fail --- program/js/common.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/program/js/common.js b/program/js/common.js index 3babf1efb..2c699d0f6 100644 --- a/program/js/common.js +++ b/program/js/common.js @@ -695,8 +695,13 @@ var Base64 = (function () { * @param {String} input The string to encode in base64. */ encode: function (input) { - if (typeof(window.btoa) === 'function') - return btoa(input); + if (typeof(window.btoa) === 'function') { + // it may fail on unicode characters, the fallback can handle them + try { + return btoa(input); + } + catch (e) {}; + } var chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0, output = '', len = input.length; @@ -728,8 +733,13 @@ var Base64 = (function () { * @param {String} input The string to decode. */ decode: function (input) { - if (typeof(window.atob) === 'function') - return atob(input); + if (typeof(window.atob) === 'function') { + // it may fail on unicode characters, the fallback can handle them + try { + return atob(input); + } + catch (e) {}; + } var chr1, chr2, chr3, enc1, enc2, enc3, enc4, len, i = 0, output = '';