How to check if an array of bytes is a valid UTF-8 string in JavaScript

1 Answer

0 votes
function isValidUTF8(data) {
    try {
        // Convert Uint8Array or Buffer to string and back to validate UTF-8
        const decoded = new TextDecoder('utf-8', { fatal: true }).decode(data);
        return true;
    } catch (e) {
        return false;
    }
}

const arr1 = new TextEncoder().encode("Hello, 世界");
const arr2 = new Uint8Array([0xa3, 0xed, 0xfd]);

console.log(isValidUTF8(arr1) ? "true" : "false");
console.log(isValidUTF8(arr2) ? "true" : "false");



/*
run:

true
false

*/

 



answered Jul 8, 2025 by avibootz
...