[gelöst] UTF-8 in MySQL Datenbank varchar - text

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 155
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

[gelöst] UTF-8 in MySQL Datenbank varchar - text

Beitrag von willi4willi »

Folgendes Problem:

Ich habe eine Datenbanktabelle in MySQL mit einem Feld varchar(50)-utf8_general_ci und mit text-utf8_general_ci angelegt.

Ich greife auf die Datenbank mit ZEOS-Komponenten zu.

Bei dem Feld mit "varchar" kommen die Umlaute richtig, bei dem Feld mit "text" ist das nicht der Fall.
"SET CHARACTER SET `utf8`;" und "SET NAMES "utf8" habe ich vorher gesendet.

In der Datenbank steht z.b. 'ABC äöü'.

Ein

Code: Alles auswählen

for i:=1 to length(s) do writeln(i:1,s[i]:3,ord(s[i]):5); 


gibt mir folgendes aus:

Feld vom Typ varchar (ftString) =richtig:

Code: Alles auswählen

 
ABC äöü
 
1  A   65
2  B   66
3  C   67
4      32
5  ├  195
6  ñ  164
7  ├  195
8    182
9  ├  195
10  ╝  188
 



Feld vom Typ "text" (ftMemo) = falsch:

Code: Alles auswählen

 
ABC ???
 
1  '   39
2  A   65
3  B   66
4  C   67
5      32
6  õ  228
7  ÷  246
8  ³  252
 


Da ich vorher nicht weiß, wie groß die Datenmengen in dem Feld werden können, kann ich nicht VarChar verwenden, bin also auf Text (oder ähnlichem) angewiesen.

Auch der Versuch das mit AnsiToUtf8() umwandeln zu wollen, schlägt fehl.

Hat jemand Erfahrungen, wie ich die Umlaute auch aus einem Feld vom Typ Text richtig bekomme?
Zuletzt geändert von willi4willi am Mi 29. Nov 2017, 20:13, insgesamt 1-mal geändert.
 

Viele Grüße

Willi4Willi

------------

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: UTF-8 in MySQL Datenbank varchar - text

Beitrag von gladio »

AnsiToUtf8 und ein paar andere funktionieren nicht mehr seit FPC 3.x:
http://wiki.freepascal.org/Better_Unicode_Support_in_Lazarus
Man sollte da die entsprechenden Pendanten mit betriebsspeziefischen Codepages nutzen
z.B. bei Windows WinCPToUTF8(..)

oder eventuell Theo's Utf8Tools http://wiki.lazarus.freepascal.org/UTF8_Tools

Benutzeravatar
willi4willi
Lazarusforum e. V.
Beiträge: 155
Registriert: Sa 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows, Linux (debian) / Lazarus 3.2 / FPC 3.2.2
CPU-Target: i386, win64, arm

[gelöst] Re: UTF-8 in MySQL Datenbank varchar - text

Beitrag von willi4willi »

Danke, das war der Grund.
Davon sind scheinbar einige Komponenten betroffen.
 

Viele Grüße

Willi4Willi

------------

Antworten