Сколько байт в строке JavaScript? - PullRequest
71 голосов
/ 08 февраля 2010

У меня есть строка JavaScript, которая составляет около 500 КБ при отправке с сервера в UTF-8. Как узнать его размер в JavaScript?

Я знаю, что JavaScript использует UCS-2, так что это означает 2 байта на символ. Однако зависит ли это от реализации JavaScript? Или на странице кодировки или, может быть, типа контента?

Ответы [ 12 ]

1 голос
/ 11 июня 2014

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

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

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

0 голосов
/ 12 февраля 2017

Один элемент в строке JavaScript считается одним блоком кода UTF-16. То есть строковые символы хранятся в 16-битном формате (1 единица кода), а 16-битный равен 2 байтам (8-битный = 1 байт).

Метод charCodeAt() может использоваться для возврата целого числа от 0 до 65535, представляющего кодовую единицу UTF-16 с заданным индексом.

codePointAt() может использоваться для возврата всего значения кодовой точки для символов Юникода, например, UTF-32.

Когда символ UTF-16 не может быть представлен в одной 16-битной кодовой единице, он будет иметь суррогатную пару и поэтому будет использовать две кодовые единицы (2 x 16-бит = 4 байта)

См. Unicode-кодировки для различных кодировок и их диапазонов кодов.

...