Conversione tra UTray-8 ArrayBuffer e String

Ho un ArrayBuffer che contiene una stringa codificata usando UTF-8 e non riesco a trovare un modo standard per convertire tale ArrayBuffer in una String JS (che a mio ArrayBuffer è codificata usando UTF-16).

Ho visto questo codice in numerosi punti, ma non riesco a vedere come funzionerebbe con qualsiasi punto di codice UTF-8 che sia più lungo di 1 byte.

 return String.fromCharCode.apply(null, new Uint8Array(data)); 

Allo stesso modo, non riesco a trovare un modo standard per convertire da un ArrayBuffer codificato in String a un UTF-8.