Если у Вас есть двоичные данные, которые необходимо закодировать, какую схему кодирования Вы используете?
Я знаю о:
Действительно ли там какие-либо другие схемы кодирования широко используются? Если так, что такое там преимущества и недостатки?
Править: Это полезно, например, при попытке хранить произвольные данные в cookie. Cookie могут только сохранить текст, не произвольные данные, таким образом, необходимо преобразовать его в некотором роде, предпочтительно со способом преобразовать его назад. Далее, предположите использование сервера не сохраняющего состояние так, чтобы Вы не могли сохранить состояние на сервере и просто поместить идентификатор в cookie. Конечно, если бы Вы делаете это, Вам также был бы нужен некоторый способ проверить, что то, что пользователь пасует назад Вам, - то, что Вы передали пользователю, например, подпись.
Кроме того, так как текущее согласие состоит в том, что необходимо использовать base64, так как это широко распространено, я также укажу, что это - то, что я использую... Мне просто любопытно, если кто-либо использовал что-либо еще, и если так, почему.
Править: На всякий случай кто-то спотыкается через это, если Вы действительно хотите использовать Base64, чтобы хранить данные в cookie, необходимо использовать измененную реализацию Base64. См. этот ответ по причине почему.
Для кодирования значений cookie вам нужно быть осторожным. См. Старый ответ :
с версией 0 файлов cookie, значения должны не содержит белого пространства, кронштейны, скобки, равны знаки , запятые, Двойные цитаты, косые сомнения, вопрос Марки, на знаках, двоеточиях и запястья. Пустые значения не могут вести себя так же на всех браузерах.
Кодировка Base64 может генерировать =
символы для определенных входов, и это технически не допускается в cookie (версия 0 cookies, в любом случае, которые являются наиболее широко поддерживаемыми). На практике я подозреваю =
на самом деле будет работать нормально, но, возможно, нет.
Я бы предположил, что быть абсолютно уверен, что ваш кодированный двоичный файл - совместим, а затем основное шестигранное кодирование является безопасным (например, в Java ).
Отредактируйте: Как указывало @paul, указывающую, есть модифицированная версия базы , которая является «url Safe» (и, я предполагаю, что «безопасный для cookie»). Использование модифицированной версии стандартного алгоритма, скорее разбавляет его очарование, разумейте вас.
Редактировать : @Shoosh указал, что =
используется только для обозначения конца строки Base64, поэтому вы можете обрезать =
, установите файл cookie, Затем присоединитесь снова =
, когда вам нужно декодировать его.
Base64 выигрывает, потому что это настолько распространено, что мне не нужно беспокоиться о прокатке собственного кодировщика/декодера. Я не сталкивался ни с какими приложениями, где меня беспокоило сохранение полосы пропускания или файлового пространства в закодированных двоичных данных.
Я думаю, что необходимо настроить функцию compilation-parse-errors-filename-function
, которая принимает имя файла и возвращает измененную версию отображаемого имени файла. Это локальная переменная буфера, поэтому вы должны установить ее в каждом буфере, который будет отображать ошибки python (вероятно, есть подходящий крюк для использования, у меня нет режима python установлен, поэтому я не могу искать его). Используйте propertize
для возврата версии входного имени файла, которая действует как гиперссылка для загрузки фактического файла. propertize хорошо документирован в руководстве elisp.
Если функция compilation-parse-errors-filename-name не вызывается, то необходимо добавить список в compilation-error-regexp-alist-alist
(то есть alist-alist, это не опечатка), который представляет собой список имен режимов, за которыми следуют регулярные выражения, соответствующие ошибкам, и числовые индексы соответствующего номера строки.
Когда-то был UTF-7. Он официально устарел, но все еще работает как ACE (ASCII совместимая кодировка). Теперь появится IDN .
-121--3823425-Base64 де-факто стандарт. Использовать все остальное - это просить неприятностей.
Когда-то время от времени был UTF-7. Он официально устарел, но он все еще работает как ACE (ASCII совместимый кодировкой). Теперь есть IDN .