Last active
March 15, 2021 02:13
-
-
Save lvisei/4ce78aed287f2eb091cf9cbbe855b951 to your computer and use it in GitHub Desktop.
JavaScript UTF-8 decode
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ES5 | |
function utf8Decode(str_data) { | |
let tmp_arr = [], | |
i = 0, | |
ac = 0, | |
c1 = 0, | |
c2 = 0, | |
c3 = 0; | |
str_data += ""; | |
while (i < str_data.length) { | |
c1 = str_data.charCodeAt(i); | |
if (c1 < 128) { | |
tmp_arr[ac++] = String.fromCharCode(c1); | |
i++; | |
} else if (c1 > 191 && c1 < 224) { | |
c2 = str_data.charCodeAt(i + 1); | |
tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63)); | |
i += 2; | |
} else { | |
c2 = str_data.charCodeAt(i + 1); | |
c3 = str_data.charCodeAt(i + 2); | |
tmp_arr[ac++] = String.fromCharCode( | |
((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63) | |
); | |
i += 3; | |
} | |
} | |
return tmp_arr.join(""); | |
} | |
//ES6 | |
function utf8Decode(str_data) { | |
let tmp_arr = [] | |
str_data += ""; | |
for (let chart of str_data) { | |
const unicode = chart.codePointAt(0) | |
tmp_arr.push(String.fromCharCode(unicode)) | |
} | |
return tmp_arr.join(""); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment