Problem z polskimi znakami

0

Mam funkcje, która zamienia mi znaki z Win 1250 na ISO8859-2:

function WinToIso(S: String): String;
var i: Integer;
begin
  for i := 1 to Length(S) do 
    case S[i] of
      Chr(185): S[i] := Chr(177);
      Chr(230): S[i] := Chr(230);
      Chr(234): S[i] := Chr(234);
      Chr(179): S[i] := Chr(179);
      Chr(241): S[i] := Chr(241);
      Chr(243): S[i] := Chr(243);
      Chr(156): S[i] := Chr(182);
      Chr(159): S[i] := Chr(188);
      Chr(191): S[i] := Chr(191);
      Chr(175): S[i] := Chr(161);
      Chr(198): S[i] := Chr(198);
      Chr(202): S[i] := Chr(202);
      Chr(163): S[i] := Chr(163);
      Chr(209): S[i] := Chr(209);
      Chr(211): S[i] := Chr(211);
      Chr(140): S[i] := Chr(166);
      Chr(172): S[i] := Chr(143);
      Chr(175): S[i] := Chr(175);
    end;

  Result := S;
end;
 

Odwołuję się do tej funkcji przy zapisie pliku:

(PageControl1.ActivePage.Controls[0] as TSynMemo).Text := WinToIso((PageControl1.ActivePage.Controls[0] as TSynMemo).Text);
 

Jednak zamiast wyświetlać mi polskie znaki na stronie internetowej
to w edytorze:
wpisuje:
żźćąśńęłó
ŻŹĆĄŚŃĘŁÓ
I gdy kliknę zpisz to w edytorze pojawia mi się coś takiego:
zzcaeló
ZZCASENLÓ

a po wrzuceniu na stronę internetową wyświetla mi:
http://jacek-projekt.ugu.pl/

Jak temu zaradzić ??

1

Ustaw kodowanie na stronie?
Btw: chr(x) == #x

0

˙ţzzcaeló ZZCASENLÓ

Dwa pierwsze znaki (˙ţ) to sygnatura Unicode (#$FF,#$FE). Skąd się tam wzięła? Nie znam TSynMemo. Sprawdź ustawienia.

0

Ale dlaczego edytorze giną mi polskie znaki po wywołaniu funkcji ??

0
DiKey11 napisał(a):

Ale dlaczego edytorze giną mi polskie znaki po wywołaniu funkcji ??

Ale dlaczego wykonujesz tą funkcję która nieudolnie usiłuje imitować konwersję znaków?

Byś powiedział więcej to my też byśmy mogli powiedzieć więcej.

0

W nowszych Delphi (chyba od 2010) jest TEncoding i z jego użyciem zmiana kodowania jest banalna. Przykład zapisu do pliku z kodowaniem ISO-8859-2:

var
  Encoding: TEncoding;
begin
  Encoding:= TEncoding.GetEncoding('iso-8859-2');
  try
  SynMemo1.Lines.SaveToFile('D:\test.txt', Encoding);
  finally
  Encoding.Free;
  end;
end;

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