Witam wszystkich.
Właśnie zaczynam bawić się intensywniej Delphi i takim układem jak w temacie.
Mam na zdalnym serwerze bazę MySQL z ustawionym kodowaniem UTF8 (jak wyczytałem w jednym z artykułów - polecanym):
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_polish_ci
Z bazą generalnie nie mam problemów. Bez kłopotów edytuję jej dane (z polskimi znakami) z poziomu Toad'a - no po prostu działa.
Również z poziomu mojej aplikacji łączę się z nią przez dbExpress bez problemu i wykonuję na niej zapytania.
Niestety, polskie znaki w danych wczytywanych z bazy, w mojej aplikacji wyświetlane są jako znak zapytania "?".
Siedzę nad tym już trzeci dzień - przewaliłem mnóstwo artykułów w googlach i próbowałem różnych rzeczy opisywanych przez ludzi również i z tego forum (łącznie z funkcją utf8ansi) ... i kicha (no chyba, że nie trafiłem we właściwy wątek).
Poniżej kod mojej aplikacji:
procedure TForm1.FormShow(Sender: TObject);
var
s : String;
begin
SQLConn1.Connected := False;
SQLConn1.Params.Values['HostName'] := '192.168.1.1';
SQLConn1.Params.Values['Database'] := 'baza';
SQLConn1.Params.Values['User_Name'] := 'root';
SQLConn1.Params.Values['Password'] := '0o9i8u7y';
SQLConn1.Params.Values['Server Port'] := '3306';
SQLConn1.Connected := True;
if SQLConn1.Connected then
begin
StaticText1.Caption := 'Database: Connected';
SQLQuery1.Active := False;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('select nazwisko from osoby');
SQLQuery1.Active := True;
while not SQLQuery1.Eof do
begin
ListBox1.Items.Add(SQLQuery1.FieldValues['nazwisko']);
SQLQuery1.Next;
end;
SQLQuery1.Active := False;
SQLQuery1.Close;
end
else
begin
StaticText1.Caption := 'Database: Disconnected';
end;
SQLConn1.Connected := False;
end;
To też nie działa:
ListBox1.Items.Add(Utf8ToAnsi(SQLQuery1.FieldValues['nazwisko']));
Nie mam już pomysłów. Utknąłem z tym problemem.
Pomóżcie proszę ruszyć z tym.
Może bazę inaczej skonfigurować?
Będę wdzięczny za sugestie.
Irmo