Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Универсальное и быстрое перекодирование строки из кодировок ANSI, KOI8-R, KOI8-U, OEM-DOS, ISO

Delphi , Синтаксис , Преобразования

Универсальное и быстрое перекодирование строки из кодировок ANSI, KOI8-R, KOI8-U, OEM-DOS, ISO

Автор: VEG
WEB-сайт: http://delphibase.endimus.com

  { **** UBPFD *********** by delphibase.endimus.com ****  >> Универсальное и быстрое перекодирование строки из кодировок  ANSI, KOI8-R, KOI8-U, OEM/DOS, ISO    В этой функции используется элементарный алгоритм, который по скорости работы  опережает свои аналоги, и позволяет перекодировать текст из различных кодировок.  Для перекодирования строки используется универсальная функция ConvertEncoding,  где в качестве первого параметра выступает строка, которую необходимо  перекодировать, а в качестве второго - матрица перекодирования, которая  определяет из какой кодировки в какую необходимо перекодировать данную строку.    В этой версии имеется 6 видов матриц перекодирования (тип TCodeMatrix):  1. cmAnsiToKoi8R - перекодирует строку из кодировки ANSI в кодировку KOI8-R  2. cmAnsiToKoi8U - перекодирует строку из кодировки ANSI в кодировку KOI8-U  3. cmKoi8RToAnsi - перекодирует строку из кодировки KOI8-R в кодировку ANSI  4. cmKoi8UToAnsi - перекодирует строку из кодировки KOI8-U в кодировку ANSI  5. cmOemDosToAnsi - перекодирует строку из кодировки OEM/DOS в кодировку ANSI  6. cmIsoToAnsi - перекодирует строку из кодировки ISO в кодировку ANSI    Зависимости: System;  Автор:       VEG, veg@tut.by, Республика Беларусь - Слуцк  Copyright:   ©VEG, 31.10.2003  Дата:        31 октября 2003 г.  ***************************************************** }    type // Тип матриц перекодировки    TCodeMatrix = array[1..255] of char;  const // Матрицы перекодировки    FirstCodes =      #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28+     #29#30#31' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^' +      '_`abcdefghijklmnopqrstuvwxyz{|}~';    cmAnsiToKoi8R: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003    + 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй'      + 'клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС';    cmAnsiToKoi8U: TCodeMatrix = FirstCodes // ver 0.8, ©VEG, 31.10.2003    + 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй'      + 'клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС';    cmKoi8RToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003    + '-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёг㬬¬LLL---¦¦¦¦Ё¦¦TTT¦¦¦+++©юабцдефгх'      + 'ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ';    cmKoi8UToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003    + '-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёєгії¬LLL-ґў¦¦¦¦ЁЄ¦ІЇT¦¦¦+ҐЎ©юабцдефгх'      + 'ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ';    cmOemDosToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003    + 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп---¦+¦¦¬¬¦¦¬---¬L+T+-+¦¦L'      + 'г¦T¦=+¦¦TTLL-г++----¦¦-рстуфхцчшщъыьэюяЁёЄєЇїЎў°•·v№¤¦ ';    cmIsoToAnsi: TCodeMatrix = FirstCodes // ver 1.0, ©VEG, 31.10.2003    + '????????????????????????˜??????? ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ'      + 'ЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ';    function ConvertEncoding(sIn: string; sCoding: string): string;  //sIn - строка для перекодирования  //sCoding - матрица для перекодирования  //result - полученная перекодированная строка  var    iFtd: integer;  begin    for iFtd := 1 to length(sIn) do      result := result + sCoding[ord(sIn[iFtd])];  end; // ver 1.0, (C)Vrublevsky Evgeny Gennadyevich (BELARUS/SLUTSK), 31.10.2003

Пример использования:

  var    sOut: string;  begin    sOut := ConvertEncoding(ConvertEncoding('Тест!', cmAnsiToKoi8R), cmKoi8RToAnsi);  end;

Перевод на русский язык:

Это фрагмент кода Delphi, который предоставляет универсальную и быструю функцию конвертации строк между различными схемами кодировки, включая ANSI, KOI8-R, KOI8-U, OEM/ДOS и ISO. Автором кода является VEG из delphibase.endimus.com.

Функция ConvertEncoding принимает два параметра: sIn, который является входной строкой для конвертации, и sCoding, которая представляет матрицу, определяющую правила конвертации. Функция возвращает конвертированную строку.

Тип TCodeMatrix представляет собой массив символов, содержащий правила конвертации для каждого символа входной строки. Есть шесть предопределенных матриц для различных схем кодировки:

  1. cmAnsiToKoi8R: конвертирует ANSI в KOI8-R
  2. cmAnsiToKoi8U: конвертирует ANSI в KOI8-U
  3. cmKoi8RToAnsi: конвертирует KOI8-R в ANSI
  4. cmKoi8UToAnsi: конвертирует KOI8-U в ANSI
  5. cmOemDosToAnsi: конвертирует OEM/ДOS в ANSI
  6. cmIsoToAnsi: конвертирует ISO в ANSI

Код использует элементарный алгоритм, который итерирует через каждый символ входной строки и заменяет его соответствующим символом из матрицы конвертации.

В примере использования код демонстрирует, как использовать функцию ConvertEncoding для конвертации строки из KOI8-R в ANSI следующими шагами:

  1. Конвертируйте строку "Тест!" из ANSI в KOI8-R с помощью cmAnsiToKoi8R.
  2. Используйте полученную строку как входной параметр для еще одной конвертации в ANSI с помощью cmKoi8RToAnsi.

Вывод этого примера будет строкой, которая была конвертирована дважды - сначала из ANSI в KOI8-R и затем обратно в ANSI.

Общий вывод кода - это полезная утилита для конвертации строк между различными схемами кодировки.

Универсальное и быстрое перекодирование строки из кодировок ANSI, KOI8-R, KOI8-U, OEM-DOS, ISO с использованием элементарного алгоритма.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Преобразования ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-04 07:03:39/0.0064370632171631/0