В настоящее время мое «лучшее понимание» заключается в том, что строки Javascript, находящиеся в памяти, представлены как DOMString , что означает, что символ Юникода a
(латинская строчная буква A) представлен 2 байтами ( в памяти) с использованием UTF-16
кодировки текста.
Эта кодировка сохраняется при использовании API хранилища браузера localStorage , где в документации также указывается, что то, что хранится, является DOMString
, то есть вопреки распространенному мифу, обычно можно хранить 10MB
и не правильно 5MB
в localStorage.
Мой вопрос, однако, касается не window.localStorage
, а вопроса о веб-расширениях Storage API browser.storage.local . С chromium
я смог проверить (используя getBytesInUse ), что хранимые данные были закодированы с использованием UTF-8, но я пока не нашел никакой документации / спецификации, в которой говорится, что у меня есть только информация выяснили экспериментально.
Ответ на этот вопрос должен указать, если:
Данные API хранилища расширений браузера хранятся в кодировке UTF-8?
и предоставьте ссылку, которая определяет это именно так.
Справочная информация / Обоснование
Я разрабатываю расширение для браузера, которое хранит текстовые данные, которые я стараюсь сжать перед хранением, чтобы сэкономить место. Поскольку предоставляемый API хранилища не позволяет хранить необработанные двоичные данные, я стараюсь настроить алгоритм сжатия, чтобы он был наименее расточительным, что делает его контрпродуктивным для преобразования двоичных данных в base64. Однако для эффективного хранения информации в тексте важно, какая кодировка текста используется.
Данные, хранящиеся в расширении браузера, в основном представляют собой сжатую разметку HTML на английском языке, которая больше всего выиграет от хранения данных с использованием кодировки текста UTF-8
.
Для справки я проверил / прочитал следующую информацию о String
типах, связанных с Javascript-движком и DOM-движком браузера: String , DOMString , USVString `