Вот это текст в UCS2:
004F0043005400410054004F004B002000380033002E0032003700200070002E0020003700200434043D043504390020043C04430437044B043A0438002E0020041104350437043B0438043C04380442043D043E002004380020043104350441043F043B04300442043D043E003A0020002A0036003200360023
Через онлайн конвертер все работает и текст переводится в нормальную кириллицу.
Ссылка тут.
Как мне в JS перекодировать UCS-2 в кириллицу?
Это строка UCS-2 в шестнадцатеричной записи. В UCS-2 каждая «буква» (code point) кодируется двумя байтами, т.е. в этой строке каждые четыре символа это одна буква. Например 004F это латинская большая «O», а 0434 это русская буква «д».
Значит нужно просто разбить эту строку на четвёрки и преобразовать их в буквы. Например так:
const s = '004F0043005400410054004F004B....';
let result = '';
for (let k = 0; k < s.length; k += 4) {
// берём очередные 4 символа
let hexcode = s.slice(k, k + 4);
// Преобразуем в число из 16-чного представления
let code = parseInt(hexcode, 16);
// Получаем букву по номеру в Unicode
result += String.fromCharCode(code);
}
А если вспомнить, что в JS есть старая добрая функция unescape, то всё это можно записать одной строчкой (не рекомендую так делать):
const s = '004F0043005400410054004F004B....';
let result = unescape(s.replace(/(....)/g, '%u$1'));
Разбор работы второго варианта оставляю в качестве домашнего задания.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей