JSFiddle - React, Tailwind, and code Playground

JavaScript

function stringToUTF8(str)
{
    let bytes = [];
    
    for(let character of str)
    {
        let code = character.codePointAt(0);
        
        if(code <= 127)
        {
            let byte1 = code;
            
            bytes.push(byte1);
        }
        else if(code <= 2047)
        {
            let byte1 = 0xC0 | (code >> 6);
            let byte2 = 0x80 | (code & 0x3F);
            
            bytes.push(byte1, byte2);
        }
        else if(code <= 65535)
        {
            let byte1 = 0xE0 | (code >> 12);
            let byte2 = 0x80 | ((code >> 6) & 0x3F);
            let byte3 = 0x80 | (code & 0x3F);
            
            bytes.push(byte1, byte2, byte3);
        }
        else if(code <= 2097151)
        {
            let byte1 = 0xF0 | (code >> 18);
            let byte2 = 0x80 | ((code >> 12) & 0x3F);
            let byte3 = 0x80 | ((code >> 6) & 0x3F);
            let byte4 = 0x80 | (code & 0x3F);
            
            bytes.push(byte1, byte2, byte3, byte4);
        }
    }
    
    return bytes;
}

function utf8ToString(bytes, fallback)
{
    let valid = undefined;
    let codePoint = undefined;
    let codeBlocks = [0, 0, 0, 0];
    
    let result = "";
    
    for(let offset = 0; offset < bytes.length; offset++)
    {
        let byte = bytes[offset];
        
        if((byte & 0x80) == 0x00)
        {
            codeBlocks[0] = byte & 0x7F;
            
            codePoint = codeBlocks[0];
        }
        else if((byte & 0xE0) == 0xC0)
        {
            codeBlocks[0] = byte & 0x1F;
            
            byte = bytes[++offset];
            if(offset >= bytes.length || (byte & 0xC0) != 0x80) { valid = false; break; }
            
            codeBlocks[1] = byte & 0x3F;
            
            codePoint = (codeBlocks[0] << 6) + codeBlocks[1];
        }
        else if((byte & 0xF0) == 0xE0)
        {
            codeBlocks[0] = byte & 0xF;
            
            for(let blockIndex = 1; blockIndex <= 2;...