AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

Ein Thema von jaenicke · begonnen am 14. Nov 2019 · letzter Beitrag vom 16. Nov 2019
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#1

Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 14. Nov 2019, 17:23
Datenbank: MariaDB • Version: 10.3.10 • Zugriff über: FireDAC
Hallo an alle,

ich versuche gerade mit FireDAC in einer MariaDB dieses Zeichen zu schreiben:

Leider gibt es dann (mit nur zweimal diesem Zeichen hintereinander) diesen Fehler:
Im Projekt ... ist eine Exception der Klasse EMySQLNativeException mit der Meldung '[FireDAC][Phys][MySQL] Incorrect string value: '\xE2\x96\xB2\xE2\x96\xB2' for column 'NEW_VALUE' at row 1' aufgetreten.

Ich habe schon versucht alles, was mir an Parametern in die Finger gekommen ist (ConnectionDefs, Serverparameter wie character_set_server, Tabellen und Spaltenformate, ...) auf utf8mb4 bzw. utf8mb4_general_ci einzustellen. Damit kann ich das Zeichen zumindest lesen. Und ich kann es seitdem auch mit AsString in das Feld schreiben. Beim Schreiben in die Datenbank, sprich beim Post, kommt aber nach wie vor der genannte Fehler.

Was muss ich noch machen? Hat jemand eine Idee?

Vielen Dank schon einmal
Viele Grüße
Sebastian
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 15. Nov 2019, 07:19
Hallo,
wo genau hast Du denn das eingestellt?

Ich habe das gefunden (google "firedac mysql utf8mb4")
http://docwiki.embarcadero.com/Libra...ession.UTf8mb4

Allerdings habe ich auch das noch gefunden
https://medium.com/@adamhooper/in-my...4-11761243e434
Heiko
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 15. Nov 2019, 09:36
Ich benutze mysql nicht, aber ich würde bei den Tabellen / Spalten Einstellungen anfangen (als Ansatzpunkt nach einer vielleicht nicht zutreffend/passend eingestellten DB Codierung)

https://dev.mysql.com/doc/refman/8.0...et-column.html

Damit kann man jedenfalls testen und variieren, unabhängig von dem Rest des Systems.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 15. Nov 2019, 11:43
Vielen Dank für die Antworten!

Ich habe das gefunden (google "firedac mysql utf8mb4")
http://docwiki.embarcadero.com/Libra...ession.UTf8mb4
Die Eigenschaft ist auf True gesetzt:
debuginfo.png

Ich habe das alles gesetzt soweit ich sehe. Das sieht in HeidiSQL dann so aus:
heidisqlcharset.png

Ich benutze mysql nicht, aber ich würde bei den Tabellen / Spalten Einstellungen anfangen (als Ansatzpunkt nach einer vielleicht nicht zutreffend/passend eingestellten DB Codierung)
Ich kann den Wert in HeidiSQL nach der Änderung auf utf8mb4 setzen. Ich kann den Wert auch mit FireDAC lesen. Ich kann ihn wirklich nur nicht schreiben.

Ich habe heute auch noch einmal probiert, aber ich sehe wirklich keinen Grund, dass es in der einen Richtung geht und in der anderen nicht.

Ach ja, vor der Umstellung auf utf8mb4 wurden direkt bei der Zuweisung in das Feld mit AsString Fragezeichen aus diesen Zeichen. Seit der Änderung passiert der Fehler erst beim Post.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (15. Nov 2019 um 11:45 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 15. Nov 2019, 13:07
Ausgehend von so einem Versuch würde ich mich an den Client ranrobben bis hin zur Anwendung. Das Zeichen scheint kein Problem für die DB darstzustellen.

https://rextester.com/XSKR14817
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 15. Nov 2019, 15:12
Ach ja, vor der Umstellung auf utf8mb4 wurden direkt bei der Zuweisung in das Feld mit AsString Fragezeichen aus diesen Zeichen. Seit der Änderung passiert der Fehler erst beim Post.
Klingt für mich so als gäbe es da eine wie auch immer geartete Intelligenz`(DB-Kompo) die wieder einmal weiß was richtig ist.
Was passert denn bei nacktem SQL

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 16. Nov 2019, 07:56
Mir ist jetzt erst aufgefallen, dass es um Maria geht. (benutze ich auch nicht)
Aber es gibt bei den Charsets / Collations doch mehr Bewegung, als ich dachte und vielleicht auch Unterschiede zwischen mySQL und Maria.

Damit wäre mein "Test" und die Beiträge basierend auf mySQL vielleicht hinfällig. Das sollte dann statt dessen am besten auf der installierten Version lokal mit dem zugehörigen CLI Tool gemacht werden.
Dabei auf die "neuesten" Sets achten. Wenn Server und Client funktioniert, beim Hersteller der Komponenten nachhaken.

Aus mySQL:
utf8mb4_unicode_ci statt utf8mb4_general_ci

Maria
utf8mb4_unicode_520_ci oder neuer

Weiß nicht, was da angesagt ist. An der Ecke würde ich jedenfalls nachschauen, es gibt da immer so Verwirrung mit einem schwedischen Zeichensatz.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.286 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Problem mit Zeichen ▲: Lesen geht mit utf8mb4, Schreiben nicht

  Alt 16. Nov 2019, 11:05
Klingt für mich so als gäbe es da eine wie auch immer geartete Intelligenz`(DB-Kompo) die wieder einmal weiß was richtig ist.
Was passert denn bei nacktem SQL
Ja, mit einer update-Anweisung funktioniert es (auch mit FireDAC).

Ich habe auch schon vermutet, dass es an FireDAC liegt. Denn wie gesagt, mit HeidiSQL geht es ja mittlerweile und wenn schon das Schreiben mit AsString eine Umwandlung bewirken kann, dass da danach mit AsString stattdessen Fragezeichen herauskommen, dann muss da ja eine entsprechende Behandlung passieren.

Vielleicht sollte ich einfach mal den Typ zurück stellen und schauen wo diese "Umwandlung" passiert. Vielleicht bringt das etwas...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:17 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