Вот кодировка : Как мне ее вернуть в нормальный текст и как любой текст перевести в эту кодировку в делфи
странное замечание автора по поводу: ... Мы, собственно, наталкиваемся на отсутствие в Delphi функций URLEncode и URLDecode.как бы стандартный юнит HTTPApp, где есть HTTPDecode и HTTPEncode, которые равносильны URLEncode и URLDecode сам юзаю такой код: Code: type TCharacters = (UTF8, win1251); function URLEncode(const Url: String; &Type: TCharacters = UTF8): String; begin case &Type of UTF8: Result:= HttpEncode(UTF8Encode(Url)); win1251: Result:= HttpEncode(Url); end; end; function URLDecode(const Url: String; &Type: TCharacters = UTF8): String; begin case &Type of UTF8: Result:= UTF8Decode(HTTPDecode(Url)); win1251: Result:= HttpEncode(Url); end; end;
Code: type TCharacters = (UTF8, win1251); function URLEncode(const Url: String; Characters: TCharacters = UTF8): String; begin case Characters of UTF8: Result:= HttpEncode(UTF8Encode(Url)); win1251: Result:= HttpEncode(Url); end; end; function URLDecode(const Url: String; Characters: TCharacters = UTF8): String; begin case Characters of UTF8: Result:= UTF8Decode(HTTPDecode(Url)); win1251: Result:= HttpEncode(Url); end; end;
Теперь пишет: [Error] Unit1.pas(36): Undeclared identifier: 'HttpEncode' [Error] Unit1.pas(44): Undeclared identifier: 'HTTPDecode' [Error] Unit1.pas(45): Undeclared identifier: 'HttpEncode'
что ты мучаешься Code: function UrlEncode(Str: string): string; function CharToHex(Ch: Char): Integer; asm and eax, 0FFh mov ah, al shr al, 4 and ah, 00fh cmp al, 00ah jl @@10 sub al, 00ah add al, 041h jmp @@20 @@10: add al, 030h @@20: cmp ah, 00ah jl @@30 sub ah, 00ah add ah, 041h jmp @@40 @@30: add ah, 030h @@40: shl eax, 8 mov al, '%' end; var i, Len: Integer; Ch: Char; N: Integer; P: PChar; begin Result := ''; Len := Length(Str); P := PChar(@N); for i := 1 to Len do begin Ch := Str[i]; if Ch in ['0'..'9', 'A'..'Z', 'a'..'z', '_'] then Result := Result + Ch else begin if Ch = ' ' then Result := Result + '+' else begin N := CharToHex(Ch); Result := Result + P; end; end; end; end; Code: function UrlDecode(Str: string): string; function HexToChar(W: word): Char; asm cmp ah, 030h jl @@error cmp ah, 039h jg @@10 sub ah, 30h jmp @@30 @@10: cmp ah, 041h jl @@error cmp ah, 046h jg @@20 sub ah, 041h add ah, 00Ah jmp @@30 @@20: cmp ah, 061h jl @@error cmp al, 066h jg @@error sub ah, 061h add ah, 00Ah @@30: cmp al, 030h jl @@error cmp al, 039h jg @@40 sub al, 030h jmp @@60 @@40: cmp al, 041h jl @@error cmp al, 046h jg @@50 sub al, 041h add al, 00Ah jmp @@60 @@50: cmp al, 061h jl @@error cmp al, 066h jg @@error sub al, 061h add al, 00Ah @@60: shl al, 4 or al, ah ret @@error: xor al, al end; function GetCh(P: PChar; var Ch: Char): Char; begin Ch := P^; Result := Ch; end; var P: PChar; Ch: Char; begin Result := ''; P := @Str[1]; while GetCh(P, Ch) <> #0 do begin case Ch of '+': Result := Result + ' '; '%': begin Inc(P); Result := Result + HexToChar(PWord(P)^); Inc(P); end; else Result := Result + Ch; end; Inc(P); end; end;
Vasa2, а может ну нафиг это программирование? научись уже читать сообщения компилятора, да и книжки умные тоже не помешало бы... ну а по теме в секции uses прописать надо юнит HTTPApp, в котором реализованы функции HttpEncode и HTTPDecode, о чем я писал выше %)
Спасибо patcher, код работает с крокозябриков в текст отлично переводит, а вот текст в крокозябрики плохо, вот какие крокозябрики должны быть: это "привет =)" А вот что выдает программа Как сделать чтоб норм работала???