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