Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL-Direct & Zeichensatz (https://www.delphipraxis.net/129591-mysql-direct-zeichensatz.html)

unclememyEX 21. Feb 2009 23:48

Datenbank: MySQL • Version: 5 • Zugriff über: ODBC connector

MySQL-Direct & Zeichensatz
 
Hallo, guten Morgen,
Ich benutze Delphi 2006 Express, MySQL 5x über ODBC connector. Ich konnte leider mit ODBC connector über Netzverk keine verbindung herstellen. Aber mit 'localhost' leuft alles wie erwartet. Als ich aber MySQL-Direct in mein Project nahm, musste ich feststellen, dass die folgenden Zeichen (ı,ş,ğ,ö,ç,Ğ,İ...) nicht richtig dargestellt werden.

Kann jemand mir helfen bitte.
Danke voraus

unclememyEX 22. Feb 2009 02:20

Re: MySQL-Direct & Zeichensatz
 
Jetzt Funktioniert ODBC über Netzwerk. Ich habe nicht anders als Gestern gemacht. Aber funktioniert's.

Meine frage ist immer noch da.

Bernhard Geyer 22. Feb 2009 09:03

Re: MySQL-Direct & Zeichensatz
 
Zitat:

Zitat von unclememyEX
Ich benutze Delphi 2006 Express

Was ist den das :gruebel:
Für MySQL würde ich direkte Zugriffskomponenten wie von DevArt oder ZEOS nehmen und den umweg über ODBC vermeiden. Hast du ein Closed Source Projekt bleibt dir zur vermeidung von Lizenzkosten nur die Kompos von DevArt.

Kontrollier mal mit dem SQL-Statement "SHOW VARIABLES" ob alle Connection-Parameter auf UTF8 stehen. Sollten sie auf irgendwas der Art LATIN1 stehen so mußt du sie mit "SET VARIABLE xxx=??UTF8?? umsetzen und dann in deinem Programm dafür sorgen das die als UTF8 ankommenden Daten nach String/Wide/Unicodestring gewandelt werden. Die Kompos von DevArts (evtl. auch ZEOS) machen das alles Transparent.

unclememyEX 23. Feb 2009 09:25

Re: MySQL-Direct & Zeichensatz
 
Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von unclememyEX
Ich benutze Delphi 2006 Express

Kontrollier mal mit dem SQL-Statement "SHOW VARIABLES" ob alle Connection-Parameter auf UTF8 stehen. Sollten sie auf irgendwas der Art LATIN1 stehen so mußt du sie mit "SET VARIABLE xxx=??UTF8?? umsetzen und dann in deinem Programm dafür sorgen das die als UTF8 ankommenden Daten nach String/Wide/Unicodestring gewandelt werden.

Morgen;

1. unter Variables und Global_variables taucht nicht weder charset, default_charset noch connection_string.
2. mit Admin.Tool controlliere (Def. Char Set = utf8 und die Tabellen auch);
3. In der 'Inline Help' gibts keine Information darüber.
4. mit dem Befehl (mysql> select * from petvet.petsahip;) erhalte ich die Daten nicht in utf8 Format aufgelistet.

Bernhard Geyer 23. Feb 2009 09:28

Re: MySQL-Direct & Zeichensatz
 
Die relevanten Variablen heißen:

character_set_client
character_set_connection
character_set_results


Wie ist der Wert dafür?

unclememyEX 23. Feb 2009 15:29

Re: MySQL-Direct & Zeichensatz
 
Zitat:

Zitat von Bernhard Geyer
Die relevanten Variablen heißen:

character_set_client
character_set_connection
character_set_results


Wie ist der Wert dafür?

die Werte sind :

character_set_client = utf8
character_set_connection = utf8
character_set_results = utf8

Bernhard Geyer 23. Feb 2009 16:18

Re: MySQL-Direct & Zeichensatz
 
Was kommt bei den Zeichen "ı,ş,ğ,ö,ç,Ğ,İ.." im Client an?

unclememyEX 23. Feb 2009 20:25

Re: MySQL-Direct & Zeichensatz
 
Ich bin in der Türkei. Von dort nehme ich bei diesem Forum teil.
Deshalb die Daten, die in die Datenbank aufgenommen werden, enthalten genannte Zeichen.
zBsp. :
Name : Aydın Güzel
Adresse : Boğaziçi çıkmazı no 12
...
usw.

Bernhard Geyer 23. Feb 2009 21:49

Re: MySQL-Direct & Zeichensatz
 
Und was kommt jetzt an? Ist es evtl. nur die UTF8-Form der Zeichen?

unclememyEX 24. Feb 2009 01:27

Re: MySQL-Direct & Zeichensatz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn Sie das Bild sehen unterschiedliche Felder mit unterschiedlichen Zeichensatzen.

Code sehen ganz formal aus :

.....
Delphi-Quellcode:
  q := 'SELECT id, PETUSER, PASTA FROM PetPers';
  FResult := FMysql.query(q, true, ex);
  if assigned(FResult) then
  begin
    ShowMessage('Query: OK - Ergebnis gespeichert');
  //  DataSource2.DataSet := FResult(rtStored);

  end
  else
    if ex then
      ShowMessage('Query: OK - ausgeführt')
    else
      ShowMessage('Query fehlgeschlagen: '+FMysql.LastError);
end;
Delphi-Quellcode:
.............................
 // Stringgrid2 füllen mit Daten..
procedure TForm1.BitBtn3Click(Sender: TObject);
var
    i, j: integer;
    af: TMysql_FieldDef;
    cr: integer;
begin
if assigned(FResult) then begin
    if FResult.ResultType=rtStored then begin
      cr := FResult.RecNo;
      StringGrid2.RowCount := FResult.RowsCount+1;
      StringGrid2.ColCount := FResult.FieldsCount+1;
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        StringGrid2.cells[i+1,0] := af.Name;
      end;
      FResult.First;
      for i:=0 to FResult.RowsCount-1 do begin
        if FResult.RecNo=cr then
          StringGrid2.Cells[0,i+1] := '*'
        else
          StringGrid2.Cells[0,i+1] := '';
        for j:=0 to FResult.FieldsCount-1 do
          StringGrid2.Cells[j+1,i+1] := FResult.FieldValue(j);
        FResult.Next;
      end;
      FResult.RecNo := cr;
    end
    else begin
      StringGrid2.RowCount := 2;
      StringGrid2.ColCount := FResult.FieldsCount+1;
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        StringGrid2.cells[i+1,0] := af.Name;
      end;
      for j:=0 to FResult.FieldsCount-1 do
        StringGrid2.Cells[j+1,1] := FResult.FieldValue(j);
    end;
  end;
end;

--------------
Connection-Teil


  FMysql.Host := 'globi';
    aa := Button10.Caption ;
 // FMysql.Host := lowerCase(aa);
 // Form1.Caption := lowerCase(aa);
  FMysql.port := 3306;
  FMysql.user :='root';
  FMysql.password := '080899';
  FMysql.UnixSocket := '';
  FMysql.Db := 'PetVet'; // Datenbank auf dem Server
  FMysql.UseNamedPipe := false;
  FMysql.UseSSL := false;
  FMysql.Compress := false;
  FMysql.TrySockets := false;

  if FMysql.Connect then

     begin
    Shape3.Brush.Color := clLime;
......


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz