const strings = [
"🟩 Container",
"Lorem ipsum dolor sit amet",
"consectetur adipiscing elit",
"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
"Ut enim ad minim veniam",
"quis nostrud 💜exercitation ullamco"
];
function utfDecodeString(array) {
let string = '';
for (let i = 0; i < array.length; i++) {
const char = array[i];
string += String.fromCodePoint(char);
}
return string;
}
function utfEncodeString(string) {
const encoded = new Array(string.length);
for (let i = 0; i < string.length; i++) {
encoded[i] = string.codePointAt(i);
}
return encoded;
}
for (let i = 0; i < strings.length; i++) {
const string = strings[i];
const encoded = utfEncodeString(string);
const decoded = utfDecodeString(encoded);
}
function utfDecodeString(array) {
return new TextDecoder().decode(new Uint8Array(array));
}
function utfEncodeString(string) {
return new TextEncoder().encode(string);
}
for (let i = 0; i < strings.length; i++) {
const string = strings[i];
const encoded = utfEncodeString(string);
const decoded = utfDecodeString(encoded);
}
const flag = Number.MIN_VALUE;
const regexp = /[\uD800-\uDFFF]/;
function utfDecodeString(array) {
if (array[0] === flag) {
return new TextDecoder().decode(new Uint8Array(array.slice(1)));
} else {
let string = '';
for (let i = 0; i < array.length; i++) {
const char = array[i];
string += String.fromCodePoint(char);
}
return string;
}
}
function utfEncodeString(string) {
if (regexp.test(string)) {
return [flag].concat(...new TextEncoder().encode(string));
} else {
const encoded = new Array(string.length);
for (let i = 0; i < string.length; i++) {
encoded[i] = string.codePointAt(i);
}
return encoded;
}
}
for (let i = 0; i < strings.length; i++) {
const string = strings[i];
const encoded = utfEncodeString(string);
const decoded = utfDecodeString(encoded);
}