Неверно - везде utf8:
alert([
'A'.charCodeAt(0),
'A'.codePointAt(0)
].join('\n'))
А вот на счёт TextEncoder согласен. Изначально в стандарте он как раз поддерживал любую кодировку, но у текущих товарищей у руля стандарта мания принудительного навязывания utf8, потому всё иное выпиливают со страшной силой. Тот же fetch из коробки уже не умеет ничего кроме utf8. Очевидно, что внутри браузера всё нужное для конвертации в любую сторону есть, но из-за такой политики приходится тащить кучу мусорного дублирующего кода.