TranslateFrom

From SunFlurry wiki
Revision as of 12:35, 19 April 2019 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  TranslateFrom (Функции работы со строками)
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, число
Визуальность:Нет

Функция производит перекодировку строкового представления аргумента из кодовой страницы, заданной вторым аргументом в UTF-16, при необходимости удаляет BOM.

Примеры кодов некоторых кириллических и прочих кодировок:

  • 0 -- ANSI (текущая системная кодировка)
  • 866 -- Кириллица OEM
  • 1200 -- UTF-16LE (стандарное многобайтовое строковое представление в системе)
  • 1201 -- UTF-16BE (стандарное многобайтовое строковое представление в системе, с переставленными местами байтами)
  • 1251 -- Кириллица Windows
  • 1252 -- Стандартная латинская кодировка Windows (латиница-1)
  • 20866 -- Кириллица KOI-8
  • 65000 -- UTF-7
  • 65001 -- UTF-8

Синтаксис

TranslateFrom(<Аргумент>,<Кодовая страница (INT)>,<Удалять BOM (INT)>=1):<Результат (STRING)>

Аргументы

  • <Аргумент> - Аргумент, строковое представление которого необходимо перекодировать.
  • <Кодовая страница (INT)> - Кодовая страница исходного текста. Если кодовая страница, из которой необходимо произвести перекодировку, будет аналогом UTF-16, т.е., ее значение будет 1200 (UTF-16LE) или 1201 (UTF-16BE), тогда аргумент будет интерпретирован, как строка в кодировке UTF-16 (многобайтовая), иначе, как строка ANSI (однобайтовая). Внимание: если при перекодировке, к примеру, из UTF-8 (кодовая страница 65001) первый аргумент будет представлять собой строку UTF-16, система сначала превратит эту строку в однобайтовую кодировку ANSI, что может явиться причиной искажения текста оригинальной кодировки. Чтобы исключить такую вероятность, убедитесь, что функция получает аргумент в однобайтовом виде ANSI в случае перекодировки из кодовых страниц, отличных от 1200 и 1201.
  • <Удалять BOM (INT)> - (необязательный аргумент) Функция не будет проверять наличие BOM в начале строки, если этот аргумент будет равен нулю, иначе (по умолчанию), если в начале текста имеется BOM, соответствующий кодировке, заданной вторым аргументом, функция удалил BOM перед началом кодировки.

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

Функция всегда возвращает строку UTF-16.

Примеры

Message(TranslateFrom("Проверка, test",65001));
//Будет выведено "Проверка, test" (пример работает для системной кодировки 1251)

Message(TranslateFrom("Проверка, test",0));
//Будет выведено "Проверка, test", функция аналогична конструкции Unicode(Ansi("Проверка, test")) (пример работает для системной кодировки 1251)

Message(TranslateFrom("ἄ䀄㸄㈄㔄䀄㨄〄",1201));
//Будет выведено "Проверка", неверное закодированный в UTF-16BE текст возвращается в корректную кодировку