У меня есть строка JavaScript, которая является о 500K, будучи отправленным от сервера в UTF-8. Как я могу сказать его размер в JavaScript?
Я знаю, что JavaScript использует UCS-2, это означает 2 байта за символ - также. Однако это зависит от реализации JavaScript? Или на кодировании страницы или возможно типе контента?
Строковые
значения не зависят от реализации, согласно ECMA-262 3rd Edition Specification , каждый символ представляет a одиночный 16-битный блок текста UTF-16 :
4.3.16 String Value
Строковое значение является членом типа String и представляет собой конечную упорядоченную последовательность нуля или более 16-битных целочисленных значений без знака.
ПРИМЕЧАНИЕ. Хотя каждое значение обычно представляет собой одну 16-битную единицу текста UTF-16, язык не налагает никаких ограничений или требований на значениях, за исключением того, что они являются 16-разрядными целыми числами без знака.
Попробуйте эту комбинацию с использованием функции 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