Wątek zablokowany 2015-10-21 23:37 przez furious programming.

Jak przerobić "krzaki" ma ludzki język?

0

Witam. Mam problem z którym nie mogę sobie poradzić i liczę na pomoc. Otóż mam plik txt który ściągam z internetu, zawierający dane którymi potrzebuję manipulować. Problem w tym że w owym pliku polskie znaki i inne symbole zostały zakodowane w poniższy sposób:

przykładowa linia:

40650,gorcu%C5%9B,26233,26,197399,1476

%C5%9B to litera "ś". Co to jest za kodowanie?
Czy jest jakiś prosty sposób na przerobienie tych krzaczków na ludzki język?

0

UTF8
AnsiToUtf8, Utf8ToAnsi, UTF8Decode, UTF8Encode + F1

0

Misiek zawsze na posterunku :P

Próbowałem zarówno tego:
UTF8ToAnsi('40650,gorcu%C5%9B,26233,26,197399,1476');

jak i tego:
UTF8Decode('40650,gorcu%C5%9B,26233,26,197399,1476');

i nie zadziałało.

Czy coś pominąłem?

0

Nie pominąłeś tylko nie pomyślałeś logicznie. Do funkcji konwertujących na string, które podał MisiekD trzeba
przekazać string, także wszelkie %cośtam trzeba zamienić na zwykłe znaki. Zrób tak, a funkcja zadziała ok:

    Caption := UTF8ToAnsi('gorcu'+ Chr(Ord(StrToInt('$C5'))));
0

Olesio napisał co masz źle, a ja skoro w między czasie napisałem to dam :p

function GetUTF(Input: string): string;
var
  p: Integer;
  s: string;
begin
  Result := Input;
  p := Pos('%', Result);
  while p > 0 do
  begin
    s := Copy(Result, p + 1, 2);
    Delete(Result, p, 3);
    Insert(Chr(StrToInt('$' + s)), Result, p);
    p := Pos('%', Result);
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  lbl1.Caption := Utf8ToAnsi(GetUTF('gorcu%C5%9B'));
end;
0

Jak zwykle bezbłędnie. Dziękuje bardzo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1