Delphi 10.4 Memo i polskie litery

Delphi 10.4 Memo i polskie litery
TC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Mam plik tekstowy w którym po otwarciu w Notepadzie widzę polskie i czeskie litery.
Plik to zwykły plik txt.
Niestety po załadowaniu do Memo zamiast czeskich i polskich znaków widzę krzaczki (zamiast jednego znaku - dwa dziwne znaki).
Co ciekawe po zapisaniu zawartości Memo do pliku poprzez Memo.Lines.SaveToFile
i otwarciu pliku w Notepadzie znowu wodzę litery polskie i czeskie.
Czcionka w notatniku i Memo ta sama.
Gdzie szukać przyczyny?

Sprawdziłem jeszcze plik w HexEdytorze i tam fakycznie widać, że każda olska litera kodowana jest na dwóch bajtach.
Wygląda to jak na obrazku i właśnie tak mi to pokazuje Memo. Jak temu zaradzic?
screenshot-20220725213458.png

katakrowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1670
1

Musisz zrobić projekt Unicode wtedy jeśli w pliku tekstowym masz kodowanie UTF-8 to powinno się wszystko ładnie wczytywać.

Tak powinieneś mieć ustawiony projekt w Delphi:

screenshot-20220725222318.png

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

Nie chce mi się wnikać o co chodzi z tymi „polskimi i czeskimi znakami” — im dłużej czytam Twój post, tym mniej rozumiem o co Ci chodzi. Nieważne — tekst w tym pliku najpewniej kodowany jest w UTF-8, dlatego znaki z zakresu ASCII zajmują po bajcie, a te diakrytyzowane po dwa bajty. A odpowiadając na pytanie „co z tym zrobić” — nic, bo Unicode to standard od milionów lat.

katakrowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1670
0
furious programming napisał(a):

Nie chce mi się wnikać o co chodzi z tymi „polskimi i czeskimi znakami” — im dłużej czytam Twój post, tym mniej rozumiem o co Ci chodzi. Nieważne — tekst w tym pliku najpewniej kodowany jest w UTF-8, dlatego znaki z zakresu ASCII zajmują po bajcie, a te diakrytyzowane po dwa bajty. A odpowiadając na pytanie „co z tym zrobić” — nic, bo Unicode to standard od milionów lat.

Ma "nie najnowsze" Delphi 10.4 i tam być może domyślnie jest jeszcze codepage=1250 albo coś namieszał w samych ustawieniach projektu.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

co masz we właściwościach fontu dla memo ustawione?

screenshot-20220726012808.png

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
4

To jest chyba Windows-1250 ale Delphi może to automatycznie przekonwertować powinno zadziałać coś takiego:
Memo1.Lines.LoadFromFile('nazwa pliku', TEncoding.UTF8);
Przy zapisie podobnie możesz użyć:
Memo1.Lines.SaveToFile('nazwa pliku', TEncoding.UTF8);

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.