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"