DecodeString
Revision as of 18:54, 17 October 2023 by 1>Admin
| DecodeString (Функции работы со строками) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Функция производит декодирование строки из указанного формата (к примеру, "Base64" или "UUE"). Могут декодироваться как ANSI, так и Unicode строки. См. также EncodeString.
Синтаксис
DecodeString(<Строка (STRING)>,<Формат декодирования (STRING)>="INTERNAL",<Результат в формате UTF-16 (INT)>=0,<Параметры декодирования (STRING)>):<Результат (STRING)>
Аргументы
<Строка (STRING)>- Аргумент, строковое представление которого необходимо декодировать.<Формат декодирования (STRING)>- (необязательный аргумент) Текстовый аргумент с наименованием способа кодирования. Для краткого описания каждого способа, см. EncodeString. Возможны следующие значения:- Internal (по умолчанию)
- Internal2
- Internal3
- Base64
- QP, Quoted-printable (планируется к реализации)
- Ascii85 (планируется к реализации)
- PE, Percent-encoding, URL encoding (кодирование URL и пр. Пример:
"%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82"UTF-8 строка "Привет", закодированная Percent-encoding). Третий аргумент функции игнорируется, исходная строка будет приниматься как ANSI и возвращаться как ANSI (конечное перекодирование в UTF-16 из UTF-8 выполняться не будет). - PUNY, Punycode (кодирование доменного имени URL с международными символами и пр. Пример:
"xn--80adxhks.xn--p1ai"декодируется, как "москва.рф"). Размер строки для декодирования ограничен способом декодирования, при переполнении переменных декодировщика, будет возвращена пустая строка. Третий аргумент функции игнорируется, результат всегда возвращается в UTF-16. Декодирование может происходить в двух режимах. Режим задается в параметрах кодирования в видеMODE:<Режим>и может принимать значения:- 0 (по умолчанию) -- декодирование произвольных строк (игнорируется доменная структура строки
<домен1>.<домен2>..., не удаляется префиксxn--при наличии). К примеру,.-7sbf5ajmsd6aдекодируется вмосква.рф. - 1 -- декодирование доменных имен (каждое доменное имя из строки
<домен1>.<домен2>...декодируется отдельно, удаляется префиксxn--при наличии). К примеру,xn--80adxhks.xn--p1aiдекодируется вмосква.рф.
- 0 (по умолчанию) -- декодирование произвольных строк (игнорируется доменная структура строки
- JSON (кодирование строк, добавляемых в документы JSON. Пример:
"123\u002b234"декодируется, как "123+234"). Третий аргумент функции игнорируется, исходная строка будет приниматься как ANSI или UTF-16 и возвращаться как UTF-16. Декодируются комбинации\",\\,\/,\b,\t,\n,\f,\rи\u????. - UUE, Uuencoding (планируется к реализации)
<Результат в формате UTF-16 (INT)>- (необязательный аргумент) По умолчанию (0) декодированная строка будет возвращена в однобайтовом формате (ANSI), если же кодировавшаяся строка была в формате UTF-16, необходимо установить этот параметр в единицу, система возвратит строку UTF-16. По содержимому декодированной строки невозможно понять, ANSI это строка или UTF-16, так как она не имеет BOM заголовка или какой-либо другой служебной информации, поэтому, то в каком из двух форматов нужно вернуть декодированную строку, остается на совести разработчика. Не все способы декодирования принимают этот аргумент во внимание.<Параметры декодирования (STRING)>- (необязательный аргумент) Текстовая строка, задающая дополнительные параметры при декодировании и способ форматирования результирующей строки. Строка имеет формат<Параметр 1>:<Значение>,<Параметр 2>:<Значение>. Возможные параметры зависят от способа декодирования.
Возвращаемое значение
Результат будет возвращен в ANSI или UTF-16 в зависимости от значения третьего аргумента.
Примеры
Message(DecodeString("A%d%b%T%W%d%\%R%N!B!@:!@+!@9!@:!","Internal",1));
//Будет выведено: "Проверка, test"
Message(DecodeString("HwRABD4EMgQ1BEAEOgQwBCwAIAB0AGUAcwB0AA==","Base64",1));
//Будет выведено: "Проверка, test"
Message(DecodeString("_:_\_Z_N_Q_\_V_LNB@:@+@9@:","Internal"));
//Для системной кодировки 1251, будет выведено: "Проверка, test"
Message(DecodeString("z/Du4uXw6uAsIHRlc3Q=","Base64"));
//Для системной кодировки 1251, будет выведено: "Проверка, test"