Difference between revisions of "EncodeString"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
(No difference)

Revision as of 08:50, 7 February 2021

  EncodeString (Функции работы со строками)
Статус разработки: Частичная реализация
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку
Визуальность:Нет

Производит кодирование строки в указанный формат (к примеру, "Base64" или "UUE"). Могут кодироваться как ANSI, так и Unicode строки, информация также может получаться из буфера.

При экспортировании строк, содержащих не ASCII символы, иногда бывает необходимо закодировать их в формат, содержащий только ASCII, форматов кодирования может быть множество. Сама система использует форматы INTERNAL, INTERNAL2 и INTERNAL3.

Синтаксис

EncodeString(<Строка или буфер (STRING,BUFFER)>,<Формат кодирования (STRING)>="INTERNAL",<Параметры кодирования (STRING)>):<Результат (STRING)>

Аргументы

  • <Строка или буфер (STRING,BUFFER)> - Аргумент, строковое представление которого необходимо закодировать. Если аргумент является буфером, кодируются его бинарные данные.
  • <Формат кодирования (STRING)> - (необязательный аргумент) Текстовый аргумент с наименованием способа кодирования. Возможны следующие значения:
    • Internal (по умолчанию): кодирование использует следующий алфавит: "!".."?","A".."^","a".."~". Система использует этот способ для кодирования внутрисистемных сообщений.
    • Internal2: кодирование использует следующий алфавит: "$".."?","A".."^","a".."~", по сравнению с Internal в результирующем тексте будут отсутствовать знаки @ и #. Система использует этот способ для кодирования некоторых элементов файлов формата SFG.
    • Internal3: кодирование использует следующий алфавит: "!".."?" (за исключением ","),"A".."^","a".."z", по сравнению с Internal в результирующем тексте будет отсутствовать знак ,. Система использует этот способ кодирования строк в функциях ObjectToString, ObjectToFile и др.
    • Base64: кодирования в формате Base64 получает на выходе строку, в которой содержатся только знаки: "A".."Z","a".."z","0".."9","+","/", строка завершается двумя или менее знаками "=". Используется для кодирования сообщений и бинарных файлов в сообщении электронной почты.
    • QP, Quoted-printable: (планируется к реализации) кодирование в формате Quoted-printable. Используется при кодировании сообщений электронной почты. Изменяет только однобайтовые символы с кодом >127 и с кодами <33, в некоторых случаях оставляя символы пробела (" ") и табуляции (chr(9)). Результатом работы будет строка, содержащая символы chr(9)," ".."~".
    • Ascii85: (планируется к реализации) Используется для кодирования Adobe PostScript и элементов файлов PDF. Результатом работы будет строка, содержащая символы "!".."u".
    • PE, Percent-encoding, URL encoding: Используется для кодирования URL. Кодирует любые символы с кодами >127, а также <33 и следующие символы: "!", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "/", ":", ";", "=", "?", "@", "[", "]", в режимах 0 или 1 также кодирует дополнительно ".", "-", "<", ">", "~", "^", "`", "\", "{", "}", "|", "_" и Chr(127). Режим задается в параметрах кодирования в виде MODE:<Режим> и может принимать значения:
      • 0 (по умолчанию) -- Кодировать также дополнительные символы
      • 1 -- Кодировать также дополнительные символы, кодировать пробел как "+"
      • 2 -- Кодировать только основные символы
      • 3 -- Кодировать только основные символы, кодировать пробел как "+"
    • PUNY, Punycode: Используется для кодирования части URL с доменным именем, когда имя содержит международные символы. К примеру москва.рф кодируется в xn--80adxhks.xn--p1ai. Результат будет содержать только символы с кодами <127, входящая строка может содержать любые символы, в т.ч. UTF-16 символы, состоящие из 4 байт (см. Строки). Размер строки для кодирования ограничен способом кодирования, при переполнении переменных кодировщика, будет возвращена пустая строка. Кодирование может происходить в двух режимах. Режим задается в параметрах кодирования в виде MODE:<Режим> и может принимать значения:
      • 0 (по умолчанию) -- кодирование произвольных строк (игнорируется доменная структура строки <домен1>.<домен2>..., не добавляется префикс xn--). К примеру, москва.рф кодируется в .-7sbf5ajmsd6a.
      • 1 -- кодирование доменных имен (каждое доменное имя из строки <домен1>.<домен2>... кодируется отдельно, добавляется префикс xn--). К примеру, москва.рф кодируется в xn--80adxhks.xn--p1ai.
    • UUE, Uuencoding: (планируется к реализации) Может использоваться при кодировании бинарных файлов в некоторых системах. Результатом работы будет строка, содержащая символы " ".."_".
  • <Параметры кодирования (STRING)> - (необязательный аргумент) Текстовая строка, задающая дополнительные параметры при кодировании и способ форматирования результирующей строки. Строка имеет формат <Параметр 1>:<Значение>,<Параметр 2>:<Значение>. Для всех форматов кодирования, функция принимает следующие параметры:
    • Indent:<Количество пробелов>: (планируется к реализации) Задает необходимое количество пробелов идущих в начале каждой отформатированной строки. По умолчанию ноль.
    • Split:<Количество символов на строку>: (планируется к реализации) Задает количество символов, после которого в текст будет добавлен перевод строки. По умолчанию ноль (не делить текст на строки).

Возвращаемое значение

Результат будет возвращен в ANSI (если способ кодирования не подразумевает иного).

Примеры

Message(EncodeString(Unicode("Проверка, test"),"Internal"));
//Будет выведено: A%d%b%T%W%d%\%R%N!B!@:!@+!@9!@:!

Message(EncodeString(Unicode("Проверка, test"),"Base64"));
//Будет выведено: HwRABD4EMgQ1BEAEOgQwBCwAIAB0AGUAcwB0AA==

Message(EncodeString(Ansi("Проверка, test"),"Internal"));
//Для системной кодировки 1251, будет выведено: _:_\_Z_N_Q_\_V_LNB@:@+@9@:

Message(EncodeString(Ansi("Проверка, test"),"Base64"));
//Для системной кодировки 1251, будет выведено: z/Du4uXw6uAsIHRlc3Q=