AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MySQL Abfrage mit Delphi XE3 und Sonderzeichen
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL Abfrage mit Delphi XE3 und Sonderzeichen

Ein Thema von AndreDXE3 · begonnen am 19. Jun 2014 · letzter Beitrag vom 19. Jun 2014
 
AndreDXE3

Registriert seit: 19. Jun 2014
3 Beiträge
 
#1

MySQL Abfrage mit Delphi XE3 und Sonderzeichen

  Alt 19. Jun 2014, 15:47
Datenbank: MySQL • Version: 5.1 • Zugriff über: Delphi XE3
Hi,
ich hoffe, mir kann hier jemand helfen.

Ich hab MySQL installiert, MySQL Workbench, und hab Delphi XE3 zu laufen. MySQL 5.1, weil neuere Versionen anscheinend nicht mit Delphi XE3 laufen.

Ich hab in der Datenbank Namen mit Sonderzeichen: Marie Geneviève z.B.

Ich hab in der Datenbank alle Zeichensätze auf UTF8 gestellt.
Wenn ich in der Workbench nach Marie Geneviève suche
select * from xxx where forename="Marie Geneviève";
krieg ich die entsprechende richtige Antwort.

setze ich dieselbe Suche mit Delphi XE3 ab, krieg ich als Antwort, daß es keine solchen Datensätze gibt.

Ich hab schon diverse Lösungsversuche probiert, wie

procedure XSQLConnectionAfterConnect(
Sender: TObject);
begin
XSQLConnection.ExecuteDirect('set names utf8;');
XSQLConnection.ExecuteDirect('set character set utf8;');
end;

oder das Umwandeln der Abfrage

tempClientDataSet.Active:=False;
sql2:='select * from xxx where forename="Marie Geneviève";';
sqlstring:=AnsitoUTF8(sql2); // diverse andere Versionen probiert
tempSQLDataSet.CommandText := sqlstring;
tempClientDataSet.Active:=True;

Leider hat davon nichts geklappt.
Frage wäre:
Wo muß man was einstellen, damit eine Abfrage mit UTF8-Sonderzeichen auch als UTF8 am Server ankommt?
oder Alternativ
gibt es eine Funktion, mit der man die Abfrage so umwandeln kann, damit eine Abfrage herauskommt, die vom Server verstanden und richtig beantwortet wird?
eine Idee wäre z.B., wenn aus

select * from xxx where forename="Marie Geneviève";

ein

select * from xxx where forename="Marie Genevieve";

würde, also die Sonderzeichen durch kompatible ASCII-Zeichen ersetzt würden.
Die Lösung mit der Funktion

function Ansi2Ascii(const s:AnsiString):AnsiString;
begin
Result := s;
if Result <> '' then
begin
UniqueString(Result);
CharToOem(Pchar(Result), Pchar(Result));
end;
end;

funktioniert übrigens nicht, da bei DelphiXE3 diverse Char und string-Varianten nicht mehr kompatibel zueinander sind (wie es z.B. bis Delphi2010 noch war)

Für Vorschläge wäre ich sehr dankbar.

Geändert von AndreDXE3 (19. Jun 2014 um 16:09 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz