Problem z polskimi znakami

Problem z polskimi znakami
DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

Kopiuj
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:

Kopiuj
(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ć ??

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

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

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0

˙ţzzcaeló ZZCASENLÓ

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

DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
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:

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.