Hi tofse
Du arbeitest mit TSQLConnection, also mit DBExpress? Seit mW. D2010 gibt es dazu ein komplett überarbeitetes DBX-Framework. Und dieses enthält Routinen, um empfangene Strings in den Zeichensatz der Anwendung umzuwandeln.
Ich selbst arbeite zwar mit
MySQL, greife aber auch mit den DBExpress-Komponenten auf den Server zu. Ein Stringgrid befülle ich zB. wie folgt:
Delphi-Quellcode:
while not DelborDataMod.SQLDataSetXE.Eof do
begin
StrGridKathegory.Cells[0, i] := IntToStr(DelborDataMod.SQLDataSetXE.FieldByName('Kath_ID').AsInteger);
StrGridKathegory.Cells[1, i] := UTF8ToUnicodeString(DelborDataMod.SQLDataSetXE.FieldByName('Kategorie').AsString);
DelborDataMod.SQLDataSetXE.Next;
inc(i);
end;
Damit hast du zwar nicht den Zeichensatz des Servers geändert, sondern nur den der Anwendung. Ausserdem müsstest du dir noch was einfallen lassen, falls du mit Datensensitiven Komponenten arbeitest - ohne dein Zutun zeigen die sonst den Zeichensatz so an, wie er vom Server kommt.
Natürlich hat der Server auch eine sessionspezifische Variable CLIENTDATASET - eine Oracel-
DB wohl ebenso wie
MySQL.
Gruss
Delbor
PS:
Zitat:
Wie kann ich NLS_CHARACTERSET in Delphi (TSQLConnection) setzen????
Hmm... Solange das der Charakterset deiner Verbindung ist, kannst du das sicher tun - in
MySQL gibt's für sowas das
SQL-Statement 'SET @@session.character_set_client = ''wasauchimmer'''.
Oracel müsste wohl auch sowas haben.