Подскажите что за кодировка?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Vasa2, 6 Jan 2012.

  1. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Вот кодировка :

    Как мне ее вернуть в нормальный текст и как любой текст перевести в эту кодировку в делфи
     
  2. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    пробуй Char(HexToInt(D0))... idhttp должен уметь декодироваить єто
     
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    urlencode\decode
     
    1 person likes this.
  4. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    UTF8ToAnsi(URLDecode('text'));
    URLDecode здесь http://www.realcoding.net/article/view/4702
     
  5. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    странное замечание автора по поводу:
    ... Мы, собственно, наталкиваемся на отсутствие в 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;
    
     
  6. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    alexey-m, пробую твой код, пишет: [Error] Unit1.pas(33): Identifier expected but 'TYPE' found
     
  7. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    какая версия делфи, если младше 2005 то переименуй &Type во что-то типа Characters
     
  8. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Делфи 7 2002 года

    Приведи плз пример для моей версии
     
  9. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    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;
    
     
  10. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Теперь пишет:
    [Error] Unit1.pas(36): Undeclared identifier: 'HttpEncode'
    [Error] Unit1.pas(44): Undeclared identifier: 'HTTPDecode'
    [Error] Unit1.pas(45): Undeclared identifier: 'HttpEncode'
     
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    что ты мучаешься

    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;
     
  12. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Vasa2, а может ну нафиг это программирование?
    научись уже читать сообщения компилятора, да и книжки умные тоже не помешало бы...
    ну а по теме в секции uses прописать надо юнит HTTPApp, в котором реализованы функции HttpEncode и HTTPDecode, о чем я писал выше %)
     
  13. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    Спасибо patcher, код работает с крокозябриков в текст отлично переводит, а вот текст в крокозябрики плохо,
    вот какие крокозябрики должны быть:

    это "привет =)"

    А вот что выдает программа

    Как сделать чтоб норм работала???
     
  14. Vasa2

    Vasa2 Banned

    Joined:
    19 Nov 2010
    Messages:
    41
    Likes Received:
    1
    Reputations:
    -5
    alexey-m, не заметил =)