Witam.
Sytuacja wyglada nastepujaco. Mam pliki zapisane w formacie UTF-16 LE:
http://i.wp.pl/a/f/rar/12658/dane_cz2.rar
Pochodza one z matury 2007 z informatyki oczywiscie.
Chcialbym zaznaczyc, iz prosze o rozwiazania zgodne z programem FreePascal. Aktualnie korzystam z najnowszej jego wersji 2.2.2.
W paczce znajduje sie m.in. plik dane_k.txt. Chcialbym sie dowiedziec jak po odczytaniu polskiego znaku z takiego pliku (przypominam - format UTF-16 LE) moglbym zapisac go poprawnie do pliku wynikowego. Z odczytem i zapisam znakow z angielskiego alfabetu nie mam problemow - moge zarowno odczytac dana litere (np. 'a') z pliku wejsciowego i poprawnie ja zapisac do pliku wynikowego.
Chcac natomiast zapisac litere z polskiego alfabetu (chr > 255) otrzymuje krzaczki jak ponizej:
Id_k Nazwisko Imie Wzrost Nazwa_sieci Wiek Symbol_woj
1 Adamczuk Magdalena 147 Hejka 69 G
2 Adamczyk Urszula 177 Citrone 41 S
3 Adamowicz Jakub 183 Multi 34 T
4 Anielska Ewelina 152 Erka 34 N
5 Antoniuk Izabela 172 Citrone 36 P
6 Arciszewski Piotr 165 Multi 29 Z
7 Awacka Izabela 183 Hejka 58 W
8 Babul Julia 143 Citrone 33 O
9 BaraD☺czuk Adam 174 Hejka 78 R
W ostatniej linijce widac, iz zamiast nazwiska "Barańczuk" wystapil "krzaczek". Jak wiec moge poprawnie odczytac polskie znaki z pliku w formacie UTF-16, a nastepnie je poprawnie zapisac ?
- Probowalem uzyc do odczytu danych z pliku wejsciowego zmiennej typu "widechar" (wchar) lub ciagu "widestring". Przy takowej probie dostaje jednakze nastepuje bledy:
- Fatal: Unknown compilerproc "fpc_read_text_widechar". Check if you use correct run time library
- Fatal: Unknown compilerproc "fpc_read_text_widestr". Check if you use correct run time library
Widzac druga czesc komunikatu probowalem ladowac (choc wydawalo sie to byc zupelnie niepotrzebne) moduly: sysutils, strutils, dos, crt, classes, strings. Probowalem takze ustawic tryb pracy: "{$Mode Delphi}", jednk to tez nie pomoglo
- Jestem w stanie, w miejscu gdzie wystepuje polski znak, uzyskac odpowiadajacy mu numer w UTF-8 (np. jak program ma odczytac z pliku wejsciowego litere "ń" moge uzyskac liczbe "324" odpowiadajaca jej numeracji w UTF-8). Czy istnieje sposob, by zamienic dany numer (np. wspomniany wczesniej "324") na znak w formacie UTF-8 ? Ewentualnue jak moge zamienic dany ciag liczb w postaci binarnej, na znak w UTF-8?
- Probowalem reinstalowac FPC, bez efektow.
A moze istnieje w ogóle inna, prostsza metoda poprawnego odczytu polskich znakow z plikow w formacie UTF-16 i ich pozniejszego zapisu?
Przypominam, iz musze korzystac z programu FreePascal w jego "podstawowej" wersji (tzn. bez jakis pomocniczych, zewnetrznych modulow).