Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung? (https://www.delphipraxis.net/161709-ist-mein-programm-jetzt-wirklich-unicode-trotz-umwandlung.html)

TheMiller 17. Jul 2011 10:22

Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,

wie einige sicher wissen, habe ich gestern angefangen, auf Delphi 2009 zu portieren. Da sich ja einiges geändert hat, habe ich natürlich auch einige Fragen.

Vorab: Meine Anzeige und das Speichern von Daten funktioniert soweit richtig, allerdings muss ich bei dem Lesen der Daten mit einem UTF8ToString casten - ich weiß nicht, ob es an der Komponente liegt, an der Delphi VCL oder an was ganz anderem.

Ich habe mal durch das Programm in die Datenbank deutschen, französichen und arabischen Text eingetragen. Hat auch geklappt. Nur bei Titel "Test" (arabisch) zeigt der "????" an - der arabische Text im RichEdit "Test" wurde aber richtig gespeichert und dargestellt.
Allerdings alles nur, wenn ich beim Auslesen UTF8ToString benutze.

Ist das nun alles richtig, oder stimmt da immer noch was nicht? Jetzt erstmal die technischen Einzelheiten und ein paar Screenshots.

Also:
Datenbank: Firebird 2.1 embedded
Zugriff über: Zeos SVN 7.0.1 alpha (angeblich Unicode-fähig mit D2009 und firebird)
Tabellen/Spalten-Charset: UTF8
Tabellen/Spalten-Collate: UTF8
ZConnection.Parameters.Add('codepage=utf8');
ZQuery.Parameters.Add('codepage=utf8');
Schreiben in die DB: ZQuery.ParamsByName('titel').AsString:=Objekt.Tite l;
Lesen aus der DB: Objekt.Titel:=UTF8ToString(ZQuery.FieldByName('titel').AsString);


Mehr habe ich nicht eingestellt. Bilder vom Programm und der Datenbank im Anhang.

Vielen Dank im Voraus!

himitsu 17. Jul 2011 10:27

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Zitat:

Delphi-Quellcode:
Schreiben in die DB: ZQuery.ParamsByName('titel').AsString:=Objekt.Titel;
Lesen aus der DB: Objekt.Titel:=UTF8ToString(ZQuery.FieldByName('titel').AsString);

Einmal UTF8 und dann wieder nicht?

Entweder auch beim Schreiben ein Umkodieren einbauen,
oder, wenn dieses schon im AsString verbaut ist, dieses beim Lesen weglassen.

TheMiller 17. Jul 2011 10:37

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Liste der Anhänge anzeigen (Anzahl: 5)
Genau das ist ja mein Problem.

Lasse ich die UTF8ToString-Umwandlung weg, habe ich wieder die encoding-Fehler. Hab grad nochmal ein Bildchen gemacht.

Das verstehe ich ja eben auch nicht... Ich möchte keine AnsiStrings haben. WENN ich schon umstellen muss, dann will ich jetzt auch full-unicode haben ;)

Bilder von der Datenbankdefinition und den neuen Ergebnissen OHNE Utf8ToString habe ich angehängt.

mkinzler 17. Jul 2011 10:41

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Das Problem scheint aber Zeos zu sein, denn die datenbank verwendet Unicode (UTF8) und Delphi strings sind auch Unicode (UTF-16).

himitsu 17. Jul 2011 10:47

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Zitat:

Lasse ich die UTF8ToString-Umwandlung weg, habe ich wieder die encoding-Fehler.
Und wenn du mal das UTF8Encode beim Schreiben reinmachst?

Wenn etwas Ansi kann und den Text nicht unbedingt aufwändig verarbeiten/vergleichen muß, dann ist UTF-8 ja nahezu kompatibel zu ANSI.
(darum wurde UTF-8 ja erschaffen und wenn man ganz sicher gehn will, dann kann man UTF-7 nutzen)

mkinzler 17. Jul 2011 10:52

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Zitat:

Wenn etwas Ansi kann und den Text nicht unbedingt aufwändig verarbeiten/vergleichen muß, dann ist UTF-8 ja nahezu kompatibel zu ANSI.
Die Zeichen, die den ersten 7Bits entsprechen sind die selben. Ich würde aber nicht von Kompatibilität reden, da bei Ansi jedes Zeichen 8Bit hat und bei UTF8 nicht! Sobald Sonderzeichen vorkommen kommt bei der Betrachtung als Ansi Müll raus.
Zitat:

Und wenn du mal das UTF8Encode beim Schreiben reinmachst?
Dann aber als Ansistrinmgs aus der Datenbank Lesen und Schreiben.

TheMiller 17. Jul 2011 11:04

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Das wäre wirklich seehr ungünstig.

Habt ihr eine Idee, wie ich die Zeos-Codes patchen kann, oder soll ich "einfach" umsteigen. Falls letzteres, würde ich euch gerne fragen, welche kostenlosen Alternativen es gibt. Ich kann mir derzeit für dieses Programm nicht noch eine Komponente kaufen.

(Ja ich weiß, an einer Datenbankkomponente sollte man nicht sparen.. einmal investiert und dann quasi problemfrei. Das mag richtig sein - geht aber wirklich nicht ;) )

PS: Die Zeos-Entwicklung scheint ja auch nicht mehr richtig weiter zu gehen, oder?

Rote Box:

Also, hab nochmal neue Bilder/Einträge gemacht, mit/ohne utf8encode etc. Im JVRichEdit wird IMMER das richtige angezeigt, egal wie ich speicher. Das verwirrt. In der TreeView und dem Label tauchen die encoding-Fehler auf.

mirage228 17. Jul 2011 11:42

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Also ich hatte letztens auch Probleme mit Zeos und der Codierung. Bei mir waren es Probleme in die Senderichtung beim Speichern von neuen Einträgen.
Hast Du sonst mal die neueste SVN REV von Zeos probiert?
Im Forum bei denen wurden bereits andere Unicode Fixes diskutiert, musst mal schauen ob die bereits ins SVN eingeflossen sind ...

Aber an sich hast du Recht, dass die Aktivität bei Zeos insgesamt gesehen recht gering geworden ist...

Viele Grüße

TheMiller 17. Jul 2011 12:00

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Ich habe mir gestern via TortoiseSVN die wohl neusten gezogen. Also muss ich wechseln, oder? Was wäre empfehlenswert?

OrNEC 17. Jul 2011 12:45

AW: Ist mein Programm jetzt wirklich Unicode? Trotz Umwandlung?
 
Also ich musste eine Anwendung in Delphi 2009 ganz neu schreiben, damit es 100% tig Unicodefähig ist. Einfach ein altes Projekt in Delphi 2009 zu öffnen und weiter machen geht ohne Unicodeprobleme nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Seite 1 von 3  1 23      

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