Раскодировать UCS2

167
15 марта 2018, 11:34

Вот это текст в UCS2:

004F0043005400410054004F004B002000380033002E0032003700200070002E0020003700200434043D043504390020043C04430437044B043A0438002E0020041104350437043B0438043C04380442043D043E002004380020043104350441043F043B04300442043D043E003A0020002A0036003200360023

Через онлайн конвертер все работает и текст переводится в нормальную кириллицу.
Ссылка тут.

Как мне в JS перекодировать UCS-2 в кириллицу?

Answer 1

Это строка 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'));

Разбор работы второго варианта оставляю в качестве домашнего задания.

READ ALSO
Полноценный аналог .addEventListener() в react?

Полноценный аналог .addEventListener() в react?

Есть ли в реакт аналогaddEventListener()? Задача следующая: есть форма, в форме - инпуты

182
Slick carousel переход на страницу window.location.href не работает

Slick carousel переход на страницу window.location.href не работает

есть карусель на Slick появилась идея при просмотре последнего слайда сделать переход на определённую страницу попробовал такой вариант

207
Показать все метки на Яндекс карте

Показать все метки на Яндекс карте

Для загрузки объектов на карту использую следующий скрипт

178
JSON одинарные кавычки

JSON одинарные кавычки

ЗдравствуйтеВстречаю два различных типа файлов JSON в различной литературе по этому формату

216