|

Óíèâåðñàëüíîå è áûñòðîå ïåðåêîäèðîâàíèå ñòðîêè èç êîäèðîâîê ANSI, KOI8-R, KOI8-U, OEM-DOS, ISO
Àâòîð: VEG
{ **** 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;
|