AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Problem mit Delphi XE, MySQL und Codepage
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Delphi XE, MySQL und Codepage

Offene Frage von "k0ppki11ah"
Ein Thema von k0ppki11ah · begonnen am 7. Feb 2011 · letzter Beitrag vom 8. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
k0ppki11ah

Registriert seit: 18. Sep 2007
21 Beiträge
 
Delphi XE Enterprise
 
#1

Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:24
Datenbank: MySQL • Version: 5.1 • Zugriff über: Zeos 7.0.0
Hallo Community,

ich habe ein riesen Problem mit dem Zugriff auf MySQL aus Delphi XE heraus.
Die Anbindung erfolgt über ZEOS 7.0.0 (aus SVN geladen).

Vorher haben ich mit Delphi 6 und einer älteren ZEOS-Version auf die MySQL DB zugegriffen. Als Codepage wurde latin1_german1_ci verwendet.

Seit der Portierung der Projekte auf Delphi XE treten nun Umlautfehler auf.

Anscheinend arbeitet Delphi XE mit UTF8. Dementsprechend habe ich versucht, die Datenbank auch auf UTF8 umzustellen.
Sowohl in der DB selber, als auch in den verwendeten Tabellen, sowie bei der ZEOS-Connection selber (ZConnection1.parameters.add(codepage=utf8)

Ich bekomme es in manchen Konstellationen hin, Umlaute richtig in die DB zu schreiben. Jedoch bei Querys, in denen Umlaute vorkommen gibt es Probleme wenn man die Parameter nicht vorher mit AnsiToUtf8() formatiert.

Beim Schreiben von Daten in ein Mediumtext-Feld hagelt es Fehlermeldungen.

Gibt es keine Möglichkeit, aus Delphi XE heraus auf die MySQL-DB mit Codepage latin1_german1_ci zuzugreifen? Die betreffenden Anwendungen müssen kein Unicode beherrschen. Wichtig ist lediglich die Darstellung von Umlauten und Sonderzeichen wie ß, Ø, ², ³...

Ich hoffe Ihr könnt mit meiner Situationsbeschreibung etwas anfangen und habt auch einen Lösungsansatz dafür.

Vielen Dank im voraus.

Mfg Olli
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:26
Wieso verwendest du keine parametrisierten Abfragen/Inserts?
I.d.R. verschwinden viele Probleme mit Sonderzeichen bei verwendung von Parametern.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:28
Delphi ab D2010 verwendet standardmässig UniCodeString, welcher UTF-16 verwendet. Einfach statt string AnsiString verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:32
Ab 2009 meintest Du
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
k0ppki11ah

Registriert seit: 18. Sep 2007
21 Beiträge
 
Delphi XE Enterprise
 
#5

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:36
Danke für die schnelle Antworten.

Das mit den parametrisierten Abfragen wollte ich demnächst der Ordnung halber auch noch angehen.

Momentan trage ich Daten folgendermassen ein:
Delphi-Quellcode:
zquery1.sql.text := 'SELECT * FROM tabelle WHERE ID is null';
zquery1.open;
zquery1.append;
   zquery1.fieldbyname('Feld1').asString := 'TEST';
   zquery1.fieldbyname('Feld2').asFloat := 123.45;
   zquery1.fieldbyname('Feld3').asDateTime := now;
zquery1.post;
Sollte ich stattdessen .fieldbyname('Feld1').asAnsiString := ____ verwenden?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:36
Ja.
Markus Kinzler
  Mit Zitat antworten Zitat
k0ppki11ah

Registriert seit: 18. Sep 2007
21 Beiträge
 
Delphi XE Enterprise
 
#7

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:45
Das mit dem AsAnsiString hab ich in meinem Testprojekt direkt mal versucht.

Funktioniert aber nicht. Er trägt mir für Umlaute immer noch kryptische Zeichen ein.

Momentan steht die Collation der DB auf latin1_german1_ci, in der ZEOS-Connection wird Client_Encoding=latin1 verwendet.

Liegt es denn nun daran, das Delphi UTF8 verwendet, oder eher daran, dass ZEOS die Daten an den MySQL Server im UTF8 Format schickt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 10:55
Ändere den Typ auf AnsiString
Markus Kinzler
  Mit Zitat antworten Zitat
k0ppki11ah

Registriert seit: 18. Sep 2007
21 Beiträge
 
Delphi XE Enterprise
 
#9

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 11:11
Welchen Typ soll ich auf AnsiString ändern?
Es handelt sich ja in diesem Fall um ein DB-Feld. Das spreche ich an über:
zquery1.fieldbyname('MEMO').asAnsiString := memo1.lines.text; Dabei tritt der Fehler auf (SQL-Error:Incorrect string value \xf6\xf6\xf6) für den Eintrag ööö im Memo-Feld.

Wenn ich stattdessen so eintrage:
zquery1.fieldbyname('MEMO').asAnsiString := AnsiToUtf8(memo1.lines.text); trägt er die Daten aus dem Memo korrekt ein.

Wenn ich die ZEOS-Connection auf codepage=utf8 einstelle und die Tabelle auf utf_general_ci trägt der die Daten korrekt in die Tabelle ein.

Wenn ich mir die Daten in einem Grid anzeigen lasse, habe ich wieder kryptische Zeichen anstatt der Umlaute. Querys, die Umlaute im WHERE enthalten, haben kein Ergebnis (aus Delphi abgesetzt), über den MySQL QueryBrowser abgesetzt funktionieren sie aber.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Problem mit Delphi XE, MySQL und Codepage

  Alt 7. Feb 2011, 11:15
Delphi-Quellcode:
s: AnsiString;
...
    s := memo1.lines.text;
    zquery1.fieldbyname('MEMO').Value := s;
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:57 Uhr.
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