Получение четырехбайтового заголовка должно быть достаточно простым:
var len = str.length;
var hdr = String.fromCharCode(
(len >> 24) & 0xff,
(len >> 16) & 0xff,
(len >> 8) & 0xff,
(len >> 0) & 0xff
);
, который можно затем добавить к оригиналу.
Однако обратите внимание, что Javascript использует UTF-16, а не UTF-8!Если у вас есть символы, которые используют более высокие кодовые точки, вам необходимо преобразовать их по отдельности в UTF-8, а затем учесть дополнительную длину в заголовке.
Отправка данных «без изменений» на сервертрудно, если вам не удастся отправить его как необработанные данные тела в сообщении POST
.JSON-кодирование или URL-кодирование потребуют экранирования специальных символов, хотя в любом случае сервер должен иметь возможность тривиально восстановить исходный поток UTF-8.