Autor Beitrag
Fienix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
BeitragVerfasst: Mo 30.08.10 08:18 
Hallo,

wer weiss wie man ein WideMemo Field in MySQL 5 deklariert.

Das benötige ich für UTF8 in Delphi 2010.

_________________
Wer sichert ist feige!!
rd3
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 14.09.10 14:48 
Hi,

es treten immer wieder Probleme bezüglich dessen auf.
Das, was mit Zugriff per PHP auf mySQL passiert, ist nicht analog mit Delphi anwendbar.

Der Server sollte im ServerCharSet UTF-8 haben und UseUnicode sollte auf TRUE stehen.

Leider werden, wenn alles korrekt verbunden ist (das betrifft den Zugriff über Delphi und den mitgelieferten Komponenten), die Felder nicht als WideStringFields hinzugefügt, sondern als Stringfield.
Leider, auch wenn die Texte korrekt in der mySQL-DB utf-8 codiert sind, geht es über Delphi mit den Standard-Komponenten nicht immer einwandfrei, sodass ich mir z.B. den Feldwert über AsString nochmal in umwandel, z.B. UTF8ToString...

dann gehts.

die tabellen liegen alle mit folgenden parametern vor:
ausblenden Quelltext
1:
COLLATION: utf8_unicode_ci					

aus der selben tabelle geht es mit PHP z.B. ohne Probleme!

Ich hab mir dazu mal einen Workaround gebastelt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
type
  TFieldHelper = class helper for TField
  private
    function GetAsString: String;
  public
    property AsString: String read GetAsString;  // nur ReadOnly!!
  end;
...
...
function TFieldHelper.GetAsString: String;
begin
  Result := UTF8ToString(inherited AsString);
end;


Ach ja, ich habe die DBExpress-Components benutzt. Über Ole-Treiber (mySQL, Postgres) war es noch grauenhafter... (in meiner Datenbank waren verschiedene Sprachen drin, chin. arab. bi-di re-li., li.-re.)...
Wahrscheinlich klappen sauber gekapselte Components besser... Aber ich wollte halt die flexibilität von dbExpress und die möglichkeit der tsqlconnection schnell auf unterschiedliche db-formate zu zugreifen...

gruß
rd3