Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Перекодировка, из разных кодировок


Автор: Poseidon 19.5.2005, 04:07
Код
unit ConvertEncodingUnit; 
interface 
type // Тип матриц перекодировки 
  TCodeMatrix = array[1..255] of char; 
{****************************************************************************** 
{ANSI, KOI8-R, KOI8-U, OEM/DOS, ISO 
В этой версии имеется 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 
******************************************************************************} 
   function ConvertEncoding(sIn: string; sCoding: string): string; 

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 
  + '???????????????????????????????? ЁЂЃЄЅІЇЈЉЊЋЌЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ' 
    + 'ЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ';    

implementation 

function ConvertEncoding(sIn: string; sCoding: string): string; 
//sIn - строка для перекодирования 
//sCoding - матрица для перекодирования 
//result - полученная перекодированная строка 
var 
  iFtd: integer; 
begin 
  Result:=''; 
  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 
{******************************************************************************} 
end. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)