Difference between revisions of "DecodeString"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(6 intermediate revisions by 2 users not shown)
Line 15: Line 15:
 
== Синтаксис ==
 
== Синтаксис ==
 
<code>
 
<code>
'''DecodeString'''(''<Строка>''{{Optional|,''<Формат декодирования (STRING)>''{{Default|{{Eq}}"INTERNAL"}}}}{{Optional|,''<Результат в формате UTF-16 (INT)>''{{Default|{{Eq}}0}}}}{{Optional|,''<Параметры декодирования (STRING)>''}}):''<Результат (STRING)>''
+
'''DecodeString'''(''<Строка (STRING)>''{{Optional|,''<Формат декодирования (STRING)>''{{Default|{{Eq}}"INTERNAL"}}}}{{Optional|,''<Результат в формате UTF-16 (INT)>''{{Default|{{Eq}}0}}}}{{Optional|,''<Параметры декодирования (STRING)>''}}):''<Результат (STRING)>''
 
</code>
 
</code>
 
==== Аргументы ====
 
==== Аргументы ====
* <code>''<Строка>''</code> - Аргумент, строковое представление которого необходимо декодировать.
+
* <code>''<Строка (STRING)>''</code> - Аргумент, строковое представление которого необходимо декодировать.
 
* <code>''<Формат декодирования (STRING)>''</code> - {{Optional}} Текстовый аргумент с наименованием способа кодирования. Для краткого описания каждого способа, см. [[EncodeString]]. Возможны следующие значения:
 
* <code>''<Формат декодирования (STRING)>''</code> - {{Optional}} Текстовый аргумент с наименованием способа кодирования. Для краткого описания каждого способа, см. [[EncodeString]]. Возможны следующие значения:
 
** '''Internal''' (по умолчанию)
 
** '''Internal''' (по умолчанию)
Line 26: Line 26:
 
** '''QP''', '''Quoted-printable''' {{Planned}}
 
** '''QP''', '''Quoted-printable''' {{Planned}}
 
** '''Ascii85''' {{Planned}}
 
** '''Ascii85''' {{Planned}}
** '''PE''', '''Percent-encoding''', '''URL encoding''' (кодирование URL и пр. Пример: <code>"%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82"</code> UTF-8 строка "Привет", закодированная Percent-encoding)  
+
** '''PE''', '''Percent-encoding''', '''URL encoding''' (кодирование URL и пр. Пример: <code>"%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82"</code> UTF-8 строка "Привет", закодированная Percent-encoding). Третий аргумент функции игнорируется, исходная строка будет приниматься как ANSI и возвращаться как ANSI (конечное перекодирование в UTF-16 из UTF-8 выполняться не будет).
 
** '''PUNY''', '''Punycode''' (кодирование доменного имени URL с международными символами и пр. Пример: <code>"xn--80adxhks.xn--p1ai"</code> декодируется, как "москва.рф"). Размер строки для декодирования ограничен способом декодирования, при переполнении переменных декодировщика, будет возвращена пустая строка. Третий аргумент функции игнорируется, результат всегда возвращается в UTF-16. Декодирование может происходить в двух режимах. Режим задается в параметрах кодирования в виде <code>MODE:<Режим></code> и может принимать значения:
 
** '''PUNY''', '''Punycode''' (кодирование доменного имени URL с международными символами и пр. Пример: <code>"xn--80adxhks.xn--p1ai"</code> декодируется, как "москва.рф"). Размер строки для декодирования ограничен способом декодирования, при переполнении переменных декодировщика, будет возвращена пустая строка. Третий аргумент функции игнорируется, результат всегда возвращается в UTF-16. Декодирование может происходить в двух режимах. Режим задается в параметрах кодирования в виде <code>MODE:<Режим></code> и может принимать значения:
 
*** '''0''' (по умолчанию) -- декодирование произвольных строк (игнорируется доменная структура строки <code><домен1>.<домен2>...</code>, не удаляется префикс <code>xn--</code> при наличии). К примеру, <code>.-7sbf5ajmsd6a</code>  декодируется в <code>москва.рф</code>.
 
*** '''0''' (по умолчанию) -- декодирование произвольных строк (игнорируется доменная структура строки <code><домен1>.<домен2>...</code>, не удаляется префикс <code>xn--</code> при наличии). К примеру, <code>.-7sbf5ajmsd6a</code>  декодируется в <code>москва.рф</code>.
 
*** '''1''' -- декодирование доменных имен (каждое доменное имя из строки <code><домен1>.<домен2>...</code> декодируется отдельно, удаляется префикс <code>xn--</code> при наличии). К примеру, <code>xn--80adxhks.xn--p1ai</code> декодируется в <code>москва.рф</code>.
 
*** '''1''' -- декодирование доменных имен (каждое доменное имя из строки <code><домен1>.<домен2>...</code> декодируется отдельно, удаляется префикс <code>xn--</code> при наличии). К примеру, <code>xn--80adxhks.xn--p1ai</code> декодируется в <code>москва.рф</code>.
 +
** '''JSON''' (кодирование строк, добавляемых в документы JSON. Пример: <code>"123\u002b234"</code> декодируется, как "123+234"). Третий аргумент функции игнорируется, исходная строка будет приниматься как ANSI или UTF-16 и возвращаться как UTF-16. Декодируются комбинации <code>\"</code>, <code>\\</code>, <code>\/</code>, <code>\b</code>, <code>\t</code>, <code>\n</code>, <code>\f</code>, <code>\r</code> и <code>\u????</code>.
 
** '''UUE''', '''Uuencoding''' {{Planned}}
 
** '''UUE''', '''Uuencoding''' {{Planned}}
* <code>''<Результат в формате UTF-16 (INT)>''</code> - {{Optional}} По умолчанию (0) декодированная строка будет возвращена в однобайтовом формате (ANSI), если же кодировавшаяся строка была в формате UTF-16, необходимо установить этот параметр в единицу, система возвратит строку UTF-16. По содержимому декодированной строки невозможно понять, ANSI это строка или UTF-16, так как она не имеет BOM заголовка или какой-либо другой служебной информации, поэтому, то в каком из двух форматов нужно вернуть декодированную строку, остается на совести разработчика.
+
* <code>''<Результат в формате UTF-16 (INT)>''</code> - {{Optional}} По умолчанию (0) декодированная строка будет возвращена в однобайтовом формате (ANSI), если же кодировавшаяся строка была в формате UTF-16, необходимо установить этот параметр в единицу, система возвратит строку UTF-16. По содержимому декодированной строки невозможно понять, ANSI это строка или UTF-16, так как она не имеет BOM заголовка или какой-либо другой служебной информации, поэтому, то в каком из двух форматов нужно вернуть декодированную строку, остается на совести разработчика. Не все способы декодирования принимают этот аргумент во внимание.
 
* <code>''<Параметры декодирования (STRING)>''</code> - {{Optional}} Текстовая строка, задающая дополнительные параметры при декодировании и способ форматирования результирующей строки. Строка имеет формат <code><Параметр 1>:<Значение>,<Параметр 2>:<Значение></code>. Возможные параметры зависят от способа декодирования.
 
* <code>''<Параметры декодирования (STRING)>''</code> - {{Optional}} Текстовая строка, задающая дополнительные параметры при декодировании и способ форматирования результирующей строки. Строка имеет формат <code><Параметр 1>:<Значение>,<Параметр 2>:<Значение></code>. Возможные параметры зависят от способа декодирования.
  

Latest revision as of 08:41, 27 November 2023

  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 декодируется в москва.рф.
    • 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"