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