Translate

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

Функция производит перекодировку строкового представления аргумента из кодовой страницы, заданной вторым аргументом в кодовую страницу, заданную третьим аргументом, при необходимости удаляя и добавляя 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

Синтаксис

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

Аргументы

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

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

Функция всегда возвращает строку UTF-16, если кодовая страница результата (третий аргумент) будет соответствовать числу 1200 или 1201, в ином случае, будет возвращена однобайтовая (ANSI) строка, содержащая перекодированный текст.

Примеры

Message(Translate("Проверка, test",65001,20866));
//Будет выведено "рТПЧЕТЛБ, test", перекодирование из UTF-8 в KOI-8.

Message(Translate("Џа®ўҐаЄ"+Chr(160),866,1200));
//Будет выведено "Проверка", перекодирование из OEM-866 в UTF-16. Соответствует конструкции TranslateFrom("Џа®ўҐаЄ"+Chr(160),866)

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