From: Szymon Jastrzebski Date: Fri, 13 Jan 2017 14:36:03 +0000 (+0100) Subject: [Filesystem] Added decoding for UTF-8 4 bytes characters X-Git-Tag: submit/tizen_3.0/20170123.045312~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F99%2F110299%2F1;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Filesystem] Added decoding for UTF-8 4 bytes characters Change-Id: I78bfa0e205d62b7e7dc5a6b95cad8cf98a941ae1 Signed-off-by: Szymon Jastrzebski --- diff --git a/src/filesystem/js/base64.js b/src/filesystem/js/base64.js index 20a29b49..034ce333 100755 --- a/src/filesystem/js/base64.js +++ b/src/filesystem/js/base64.js @@ -115,7 +115,7 @@ var Base64 = { }, _utf8_decode: function(utfarray) { var str = ''; - var i = 0, c = 0, c1 = 0, c2 = 0; + var i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0; while (i < utfarray.length) { @@ -130,13 +130,19 @@ var Base64 = { str += String.fromCharCode(((c & 31) << 6) | (c1 & 63)); i += 2; } - else { + else if((c > 223) && (c < 240)) { c1 = utfarray[i + 1]; c2 = utfarray[i + 2]; str += String.fromCharCode(((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63)); i += 3; } - + else {//support 4 bytes characters e.g. Emojis + c1 = utfarray[i + 1]; + c2 = utfarray[i + 2]; + c3 = utfarray[i + 3]; + str += String.fromCodePoint(((c & 7) << 18) | ((c1 & 63) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 4; + } } return str;