Сколько байтов в строке JavaScript?

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

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

78
задан Paul Biggar 8 February 2010 в 04:09
поделиться

2 ответа

Строковые значения не зависят от реализации, согласно ECMA-262 3rd Edition Specification , каждый символ представляет a одиночный 16-битный блок текста UTF-16 :

4.3.16 String Value

Строковое значение является членом типа String и представляет собой конечную упорядоченную последовательность нуля или более 16-битных целочисленных значений без знака.

ПРИМЕЧАНИЕ. Хотя каждое значение обычно представляет собой одну 16-битную единицу текста UTF-16, язык не налагает никаких ограничений или требований на значениях, за исключением того, что они являются 16-разрядными целыми числами без знака.

30
ответ дан 24 November 2019 в 10:28
поделиться

Попробуйте эту комбинацию с использованием функции unescape js:

const byteAmount = unescape (encodeURIComponent (yourString)). Length

Пример процесса полного кодирования:

const s  = "1 a ф № @ ®"; //length is 11
const s2 = encodeURIComponent(s); //length is 41
const s3 = unescape(s2); //length is 15 [1-1,a-1,ф-2,№-3,@-1,®-2]
const s4 = escape(s3); //length is 39
const s5 = decodeURIComponent(s4); //length is 11
19
ответ дан 24 November 2019 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: