Translate
Translate (Функции работы со строками) | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция производит перекодировку строкового представления аргумента из кодовой страницы, заданной вторым аргументом в кодовую страницу, заданную третьим аргументом, при необходимости удаляя и добавляя BOM.
Примеры кодов некоторых кириллических и прочих кодировок:
- -1 -- В функциях загрузки используется как псевдо-кодировка для отключения проверки BOM, загрузка будет происходить безусловно в строку ANSI без какой-либо перекодировки.
- 0 -- ANSI (текущая системная кодировка). При загрузке в такой кодировке, функции загрузки обычно проверяют наличие BOM, если он есть загружают в соответствии с ним.
- 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.