В моем коде JavaScript мне нужно составить сообщение на сервер в следующем формате:
<size in bytes>CRLF
<data>CRLF
Пример:
3
foo
Данные могут содержать символы Unicode. Мне нужно отправить их как UTF-8.
Я ищу наиболее кроссбраузерный способ вычисления длины строки в байтах в JavaScript.
Я пробовал это для составления своей полезной нагрузки:
return unescape(encodeURIComponent(str)).length + "\n" + str + "\n"
Но он не дает мне точных результатов для старых браузеров (или, может быть, строк в этих браузерах в UTF-16?).
Есть подсказки?
Обновление:
Пример: длина в байтах строка ЭЭХ! Наивно?
в UTF-8 - 15 байтов, но некоторые браузеры вместо этого сообщают 23 байта.