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

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

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

Beitragvon willi4willi » 29. Nov 2017, 18:39 [gelöst] UTF-8 in MySQL Datenbank varchar - text

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 29. Nov 2017, 20:13, insgesamt 1-mal geändert.
Viele Grüße

Willi4Willi

------------
willi4willi
 
Beiträge: 106
Registriert: 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows (10), Linux (debinan) / FPC 3.0.4 / Lazarus 1.8.4 | 
CPU-Target: i386, win64, arm
Nach oben

Beitragvon gladio » 29. Nov 2017, 19:24 Re: UTF-8 in MySQL Datenbank varchar - text

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
gladio
 
Beiträge: 95
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon willi4willi » 29. Nov 2017, 20:12 [gelöst] Re: UTF-8 in MySQL Datenbank varchar - text

Danke, das war der Grund.
Davon sind scheinbar einige Komponenten betroffen.
Viele Grüße

Willi4Willi

------------
willi4willi
 
Beiträge: 106
Registriert: 1. Nov 2008, 18:06
OS, Lazarus, FPC: Windows (10), Linux (debinan) / FPC 3.0.4 / Lazarus 1.8.4 | 
CPU-Target: i386, win64, arm
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

porpoises-institution
accuracy-worried