2014-09-03 4 views
0

В соответствии с ECMA-262 5th Edition:схема кодирования для хранения печенья в браузерах

Соответствующая реализация данного международного стандарта должны интерпретируют символы в соответствии со стандартом Unicode, версия 3.0 или более поздней версии и ISO/IEC 1064 6-1 с использованием UCS-2 или UTF-16 в качестве принятой кодирующей формы, уровень реализации 3. Если принятое подмножество ISO/IEC 10646-1 не указано иначе, предполагается, что это подмножество BMP , сборник 300. Если принятая форма кодировки не определена в , то она считается формой кодировки UTF-16.

Это приводит меня на следующие вопросы:

  1. UTF-16 или UCS-2 рекомендованный ECMAScript стандарт относится к форме кодирования будет использоваться для хранения целей или вычислите целей?
  2. Какое кодирование символов (для целей хранения) используется для хранения файлов cookie на клиенте?
  3. Кроме того, поскольку значения заголовка HTTP не допускают не символы US-ASCII, изменит ли браузер кодировку символов на ASCII перед отправкой файлов cookie на сервер?

Я особенно заинтересован в характере кодирование браузеры используют для хранения печенья так, что позволило бы мне рассчитать фактическое числа байт я мог бы использовать в печенье.

ответ

1

1. UTF-16 или UCS-2, рекомендованный стандартом ECMAScript, относится к форме кодирования, которая будет использоваться для целей хранения или вычисления.

Вычисление, так как ECMAScript указывает только интерфейс, представленный на ваши сценарии, а не то, как это реализовано за кулисами. Реализация может использовать любую форму хранения строк (например, она могла бы оптимизировать строки только для ASCII, чтобы принимать только один байт в единицу кода ECMAScript char/UTF-16).

2.Какая кодировка символов (для целей хранения) используется для хранения файлов cookie на клиенте?

Не указано в ECMAScript или любом другом веб-стандарте. IE сохраняет файлы cookie в кодовой странице по умолчанию, определенной по языку (aka ANSI). Некоторые другие браузеры используют базы данных SQLite, как правило, с UTF-8.

3.Также, поскольку значения заголовка HTTP не позволяют использовать символы, отличные от US-ASCII, изменяет ли браузер кодировку символов в ASCII перед отправкой файлов cookie на сервер?

Различается в разных браузерах. В прошлый раз я проверил: IE кодируется в ANSI. Chrome использует UTF-8. Firefox использует младший байт каждого блока кода UTF-16 (совместим с ISO-8859-1 для символов, которые поддерживают, иначе безвозвратно искалеченные).Safari полностью блокирует не-ASCII.

Результат: на практике символы, отличные от ASCII, вообще не используются в файлах cookie. Если вам нужна безопасность Unicode и/или большая емкость, используйте DOM Storage.

Я особенно заинтересован в том, что браузеры кодирования символов используют для хранения файлов cookie, поскольку это позволит мне рассчитать фактическое количество байтов, которые я мог бы использовать для каждого файла cookie.

Ограничения на использование браузера vary widely в любом случае.

Смежные вопросы