Длина строки в байтах в JavaScript

В моем коде 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 байта.

85
задан Alexander Gladysh 1 April 2011 в 16:17
поделиться