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

В мой код JavaScript, мне нужно написать сообщение на сервер в следующем формате:

<size in bytes>CRLF <data>CRLF 

Пример:

3 foo 

Данные могут содержать символы Unicode. Мне нужно отправить их как utf-8.

Ищу самый кросс-браузерный способ, чтобы вычислить длину строки в байтах в JavaScript.

Я попытался это сочинила моя полезная нагрузка:

return unescape(encodeURIComponent(str)).length + "\n" + str + "\n" 

Но это не дает мне точные результаты для старых браузеров (или, может быть, строки в тех браузерах в utf-16?).

Что посоветуете?

Обновление:

Пример: Длина в байтах строки ЭЭХ! Naïve? в utf-8 занимает 15 байт, но некоторые браузеры доклад 23 байт вместо.

Вы можете попробовать это:

function getLengthInBytes(str) {   var b = str.match(/[^x00-xff]/g);   return (str.length + (!b ? 0: b.length));  } 

Это работает для меня.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*