Ваша строка в Юникоде закодирована с использованием нотации объекта HTML. Как правило, это означает, что независимо от того, что закодирована строка, ожидается, что она окажется в середине документа HTML, где это будет видно HTML-парсером.
Если вы каким-то образом получил эту строку в JavaScript в браузере, вы можете получить в кодированном Unicode, позволяя браузер разобрать его:
var str = "มอเตอร์ไซค์";
var elem = document.createElement("div");
elem.innerHTML = str;
alert(elem.textContent);
string.fromCharCode()
функция ожидает один или более числовые аргументы; он не будет понимать объекты HTML. Таким образом, если вы не в браузере (как, если у вас есть строка в программе Node.js или что-то подобное), вы можете преобразовать строку с собственным кодом:
var str = "มอเตอร์ไซค์";
var thai = String.fromCharCode.apply(String, str.match(/x[^;]*;/g).map(function(n) { return parseInt(n.slice(1, -1), 16); }));
Это преобразование будет работать только тогда, когда задействованы кодовые точки в пределах первых значений 64K.
Что показывает сейчас? –