Почему некоторые двоичные файлы имеют нулевые байты между символами при хранении строк? - PullRequest
0 голосов
/ 28 апреля 2018

Назад, когда я раньше возился с файлами .CON (родной формат файлов, который игры использовали бы на Xbox 360), я помню, как видел текст в этих файлах, разделенных нулевыми байтами, при просмотре их в шестнадцатеричном редакторе.

Сегодня я также заметил, что при просмотре файла локального хранилища из Chrome с помощью браузера SQLite; все текстовые поля хранятся в виде двоичных значений или двоичных объектов, например:

22007700730073003a002f002f006700
6100740065007700610079002e006400
6900730063006f00720064002e006700
67002200

Что с нулевыми байтами? Это другой тип кодировки символов? Я полагаю, что это не может быть utf8, так как utf8 не будет использовать два байта для кодирования символов в диапазоне ASCII, но, возможно, я ошибаюсь?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Это UTF-16 для "wss://gateway.discord.gg". (Если вы видите чередующиеся байты ASCII и нулевые байты, вы можете поспорить, что это UTF-16.)

Поскольку строка JavaScript - это UTF-16, а SQLite поддерживает хранение текста в UTF-16, неудивительно, что Chrome использует это для реализации localstorage.

0 голосов
/ 28 апреля 2018

Это, вероятно, кодировка UTF-16, которая использует два байта для хранения символов ASCII и является предпочтительной кодировкой Юникода для большинства вызовов функций Windows.

...