Тема: Кодировка
Показать сообщение отдельно
Старый 27.12.2006, 18:43   #7
v0id
AnyKey`щик
 
Регистрация: 29.11.2006
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Re: Кодировка

function HexDigit(i: Integer): String;

var

  hchr: array[0..15] of Char; 

begin

    hchr[0]:= '0';

    hchr[1]:= '1';

    hchr[2]:= '2';

    hchr[3]:= '3';

  hchr[4]:= '4';

    hchr[5]:= '5';

  hchr[6]:= '6';

    hchr[7]:= '7';

    hchr[8]:= '8';

    hchr[9]:= '9';

    hchr[10]:= 'A';

    hchr[11]:= 'B';

    hchr[12]:= 'C';

    hchr[13]:= 'D';

    hchr[14]:= 'E';

    hchr[15]:= 'F';

    

     HexDigit := hchr[i and $F];

end;



function Byte2Hex(i: Integer): String;

var

  s: String;

begin

  s := HexDigit( i and $F );

  i := right(i, 4); //i div 16; //shr 4;

  Byte2Hex := HexDigit( i and $F ) + s;

end;



function tohtmlcode(s: String): String;

var

  r: String;

    i: Integer;

begin

  r := '';

  for i := 0 to Length(s) - 1 do

    r := r + '%' + Byte2Hex(Ord(GetChar(s, i)));

  tohtmlcode:= r;

end;



function Str2UTF8(sta: string):string;
var    ia: integer;    saa : string;
begin
    saa:='';
    for ia:= 0 to Length(sta) do
        if GetChar(sta, ia) > '~' then 
            saa:= saa + Chr(Ord(GetChar(sta, ia)) - 64432)
        else 
            saa:= saa + GetChar(sta, ia);
    Str2UTF8:= Copy(saa, 0, Length(saa)-1);
end;


function Str2ASCII(sta: string):string;
var    ia: integer;    saa: string;
begin
    saa:='';
    for ia:= 0 to Length(sta) do
    if GetChar(sta, ia) > '~' then 
        saa:= saa + Chr(Ord(GetChar(sta, ia)) + 64432)
    else 
        saa:= saa + GetChar(sta, ia);
    Str2ASCII:= Copy(saa, 0, Length(saa)-1);
end; 


function mp(s, sub: String): Integer;

var

    i: Integer;

begin

    mp:= -1;

    for i:= 0 to Length(s) - 1 do begin

        if tohtmlcode(GetChar(s, i)) = tohtmlcode(sub) then begin

            mp:= i;

            Break;

        end;

    end;

end;



function WinKoi(st: String): String; 

var 

  i:      Integer;

    z:   Integer;

  s:   String;

  win: String;

  koi: String;

begin 

  s := st;

  win := Chr(168) + Chr(84) + Chr(254) + Chr(224) + Chr(225) + Chr(246) + Chr(228) + Chr(229) + Chr(244) + Chr(227) + 

Chr(245) + Chr(232) + Chr(233) + Chr(234) + Chr(235) + Chr(236) + Chr(237) + Chr(238) + Chr(239) + Chr(255) + Chr(240) + 

Chr(241) + Chr(242) + Chr(243) + Chr(230) + Chr(226) + Chr(252) + Chr(251) + Chr(231) + Chr(248) + Chr(253) + Chr(249) + 

Chr(247) + Chr(250) + Chr(222) + Chr(192) + Chr(193) + Chr(214) + Chr(196) + Chr(197) + Chr(212) + Chr(195) + Chr(213) + 

Chr(200) + Chr(201) + Chr(202) + Chr(203) + Chr(204) + Chr(205) + Chr(206) + Chr(207) + Chr(223) + Chr(208) + Chr(209) + 

Chr(210) + Chr(211) + Chr(198) + Chr(194) + Chr(220) + Chr(219) + Chr(199) + Chr(216) + Chr(221) + Chr(217) + Chr(215) + 

Chr(218) + Chr(144);



  koi := Chr(168) + Chr(184) + Chr(192) + Chr(193) + Chr(194) + Chr(195) + Chr(196) + Chr(197) + Chr(198) + Chr(199) + 

Chr(200) + Chr(201) + Chr(202) + Chr(203) + Chr(204) + Chr(205) + Chr(206) + Chr(207) + Chr(208) + Chr(209) + Chr(210) + 

Chr(211) + Chr(212) + Chr(213) + Chr(214) + Chr(215) + Chr(216) + Chr(217) + Chr(218) + Chr(219) + Chr(220) + Chr(221) + 

Chr(222) + Chr(223) + Chr(224) + Chr(225) + Chr(226) + Chr(227) + Chr(228) + Chr(229) + Chr(230) + Chr(231) + Chr(232) + 

Chr(233) + Chr(234) + Chr(235) + Chr(236) + Chr(237) + Chr(238) + Chr(239) + Chr(240) + Chr(241) + Chr(242) + Chr(243) + 

Chr(244) + Chr(245) + Chr(246) + Chr(247) + Chr(248) + Chr(249) + Chr(250) + Chr(251) + Chr(252) + Chr(253) + Chr(254) + 

Chr(255) + Chr(144);



  for i := 0 to Length(s) - 1 do begin

        z := {Pos}mp(win, GetChar(s, i));

        if (z > -1) then

          s:= SetChar(s, GetChar(koi, z), i);

    end;

    

  WinKoi := s;

end;
затем Text:= Str2ASCII(GetTextBoxString);
и перед пост запросом tohtmlcode(WinKoi(Text));

вопчем что то типа того, сначало было проще)

я сейчас на делфи пишу, пока перевел на мидлет паскаль этот банальный код изматерился весь %))
(Offline)
 
Ответить с цитированием