Umlaute in DBGrid
Umlaute in DBGrid
Hallo zusammen
ich hab da ein problem, ich hab mir letztens einen neuen daily snapshot gezogen, heute auch noch mal, nun habe ich aber das problem das Text in dem 1 Umlaut ist gar nicht angezeigt wird, hat das was mit dem utf zeugs zu tun und hatte das problem von euch auch schon jemand?
danke für antworten
ich hab da ein problem, ich hab mir letztens einen neuen daily snapshot gezogen, heute auch noch mal, nun habe ich aber das problem das Text in dem 1 Umlaut ist gar nicht angezeigt wird, hat das was mit dem utf zeugs zu tun und hatte das problem von euch auch schon jemand?
danke für antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Ja, das kenne ich. Wir hatten das Problem auch.
Es liegt an den verschiedenen Codepage Einstellungen zwischen der DB, der ZConnection und dem OS.
Probier mal in den ZConnection Properties die Codepage zu setzen:
ZConnection_main.Properties.Clear;
ZConnection_main.Properties.Add('codepage=utf8');
ZConnection_main.Connect;
Hängt natürlich von Deiner Codepage ab. Auf MySQL haben wir so unsere Probleme in den Griff bekommen.
Gruss,
Tibor
Es liegt an den verschiedenen Codepage Einstellungen zwischen der DB, der ZConnection und dem OS.
Probier mal in den ZConnection Properties die Codepage zu setzen:
ZConnection_main.Properties.Clear;
ZConnection_main.Properties.Add('codepage=utf8');
ZConnection_main.Connect;
Hängt natürlich von Deiner Codepage ab. Auf MySQL haben wir so unsere Probleme in den Griff bekommen.
Gruss,
Tibor
hallo piper
habs versucht funktioniert jedoch nicht, ein showmessage dialog wird auch angezeigt aber auch ohne irgend ein text, dieser text kommt jedoch nicht von der Datenbank, also wird's wahrscheinlich an was anderem liegen.
habs versucht funktioniert jedoch nicht, ein showmessage dialog wird auch angezeigt aber auch ohne irgend ein text, dieser text kommt jedoch nicht von der Datenbank, also wird's wahrscheinlich an was anderem liegen.
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
schau mal hier http://wiki.lazarus.freepascal.org/LCL_ ... th_Unicode" onclick="window.open(this.href);return false;
Ich meine gelesen zu haben, dass sich mit den neuen Versionen die Standardcodepage geändert hat. Du solltest für die IDE und damit auch für die erzeugten Programme die Copepage einstellen können.
Gruss,
Tibor
Ich meine gelesen zu haben, dass sich mit den neuen Versionen die Standardcodepage geändert hat. Du solltest für die IDE und damit auch für die erzeugten Programme die Copepage einstellen können.
Gruss,
Tibor
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
habe es nun mal in MS-Win XP mit dem Snapshot von gestern ausprobiert.
Ist definitiv ein Problem mit der neuesten Version!
Wenn Du die strings umcodierst:
label1.Caption:=Utf8Encode('dies it ein ööüü test');
showmessage(ansitoutf8('dies it ein ööüü test'));
dann klappt es mit der Ausgabe.
Es scheint da eine Diskrepanz zwischen dem normalen ANSI String und der Ausgabe zu geben. Ich weiss noch nicht wie man den Unicode Support für MS-Win wieder abschaltet. Ich vermute es ist ein Commandozeilenparameter für den FPC.
Ev. mal im internationalen Forum nachfragen.
Sobald ich wieder mehr Zeit habe, gucke ich auch nach. Momentan kann ich nicht viel mehr tun, sorry!
Du wirst aber nicht der Einzige bleiben, der sich darüber beschwert...
Gruss,
Tibor
Ist definitiv ein Problem mit der neuesten Version!
Wenn Du die strings umcodierst:
label1.Caption:=Utf8Encode('dies it ein ööüü test');
showmessage(ansitoutf8('dies it ein ööüü test'));
dann klappt es mit der Ausgabe.
Es scheint da eine Diskrepanz zwischen dem normalen ANSI String und der Ausgabe zu geben. Ich weiss noch nicht wie man den Unicode Support für MS-Win wieder abschaltet. Ich vermute es ist ein Commandozeilenparameter für den FPC.
Ev. mal im internationalen Forum nachfragen.
Sobald ich wieder mehr Zeit habe, gucke ich auch nach. Momentan kann ich nicht viel mehr tun, sorry!
Du wirst aber nicht der Einzige bleiben, der sich darüber beschwert...
Gruss,
Tibor
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
habe jetzt nochmal nachgesehen.
Als Erstes hatten wir schon mal einen Thread im Forum zu Codpage Problemen. Da hatte Monta den Tipp gegeben, dass im Editor über die rechte Maustaste unter "File" das Coding des Sourcecodes gesetzt werden kann.
Das Problem scheint zu sein, dass der Compiler und die IDE zwar mit UTF8 arbeiten aber die Sourcodes mit CP1252 oder eben der aktuellen Codepage kodiert werden.
Wie man dies Verhalten standarmässig verändert kann ich momentan nicht sagen aber dann klappt es mit dem Beispielcode auch ohne die Umwandlung (nachdem ich den Sourcecode als UTF8 gespeichert hatte).
Ansonsten gibt es noch die Compilerdirektive {$codepage utf8}, {$codepage cp850} etc.
Ist leider nciht so gut dokumentiert.
Hoffe das hilft ein bisschen weiter.
Als Erstes hatten wir schon mal einen Thread im Forum zu Codpage Problemen. Da hatte Monta den Tipp gegeben, dass im Editor über die rechte Maustaste unter "File" das Coding des Sourcecodes gesetzt werden kann.
Das Problem scheint zu sein, dass der Compiler und die IDE zwar mit UTF8 arbeiten aber die Sourcodes mit CP1252 oder eben der aktuellen Codepage kodiert werden.
Wie man dies Verhalten standarmässig verändert kann ich momentan nicht sagen aber dann klappt es mit dem Beispielcode auch ohne die Umwandlung (nachdem ich den Sourcecode als UTF8 gespeichert hatte).
Ansonsten gibt es noch die Compilerdirektive {$codepage utf8}, {$codepage cp850} etc.
Ist leider nciht so gut dokumentiert.
Hoffe das hilft ein bisschen weiter.
hy piper
ich danke dir für dein engagement mir bei meinem problem zu helfen, werde dies mal ausprobieren.
noch eine Frage zu der compiler direktive, wenn ich die zu beginn in meinem lpr setze giltet die dann für mein gesamtes projekt oder muss ich die in jeder unit setzen? kenn das genaue verhalten des fpc nicht mit den direktiven.
ich danke dir für dein engagement mir bei meinem problem zu helfen, werde dies mal ausprobieren.
noch eine Frage zu der compiler direktive, wenn ich die zu beginn in meinem lpr setze giltet die dann für mein gesamtes projekt oder muss ich die in jeder unit setzen? kenn das genaue verhalten des fpc nicht mit den direktiven.
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
Das mit dem sourcecode umstellen funktioniert nun soweit. ist jedoch sehr umständlich um in jeder unit bei meinem projekt dies umzustellen (77)... ich warte drum mal noch bis das mit der compilerdirektive beantwortet wurde.
Das was ich noch beobachtet habe ist, das nun wenn ich von meinem programm aus neue datensätze in meiner FB Datenbank mit umlauten absetzte diese utf kodiert in der Table abgelegt werden im programm jedoch richtig mit ö ä ü dargestellt wird. Das problem wird wohl sein das ich meine datenbank mit einer anderen codepage erstellt habe. Aber solange die datensätze ja in meinem programm richtig angezeigt werden ist's ja gut, das problem ist nun nur noch das die alten einträge mit umlauten völlig ignoriert werden, weiss da jemand rat wie ich meine Datenbank zu umkonfigurieren kann das für alle tables die codepage utf8 gilt?
danke für antworten
Das was ich noch beobachtet habe ist, das nun wenn ich von meinem programm aus neue datensätze in meiner FB Datenbank mit umlauten absetzte diese utf kodiert in der Table abgelegt werden im programm jedoch richtig mit ö ä ü dargestellt wird. Das problem wird wohl sein das ich meine datenbank mit einer anderen codepage erstellt habe. Aber solange die datensätze ja in meinem programm richtig angezeigt werden ist's ja gut, das problem ist nun nur noch das die alten einträge mit umlauten völlig ignoriert werden, weiss da jemand rat wie ich meine Datenbank zu umkonfigurieren kann das für alle tables die codepage utf8 gilt?
danke für antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
-
- Beiträge: 131
- Registriert: Sa 5. Apr 2008, 17:57
- OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
- CPU-Target: 32Bit/64Bit
- Wohnort: Ulm
Umlaute und Codepages sind immer "a pain in the ass"...
Grundsätzlich ist darauf zu achten, dass alle Ebenen des Systems mit der gleichen Codepage arbeiten. Ansonsten kann es zu unschönen Effekten kommen.
Die meisten aktuellen SQL-Server und Firebird macht da keine Ausnahme, können für Tabellen und manchmal auch für bestimmte Felder Codepages bzw. Collations definieren.
In Deinem Fall müsstest Du die Einstellungen Deines FB Servers kontrollieren welche Collation als Standard defniert ist.
Ab FB 2.0 soll auch der UTF-8 Support OK sein.
Wir nutzen MySQL und PostgreSQL und haben uns dazu entschieden komplett auf UTF-8 zu setzen. Da wir unter Linux arbeiten merken wir die Probleme erst wenn wir für MS-Win crosscompilieren.
Die existierenden Einträge könntest Du über einen Dump sichern, die Datein dann umcodieren (mit einem guten Editor - unter Linux würde sich Kate anbieten) und dann nach der Umstellung der Collation Einstellung für die Tabelle bzw. Datenbank wieder importieren.
Der Import muss dann natürlich mit einem Programm erfolgen welches selbst die Einträge auch als UTF-8 behandeln kann.
Ev. Export in CSV-Datei und dann Re-Import über ein kleines Tool welches Du Dir selbst erstellst.
Aufpassen musst Du noch mit BLOB Felder. Beim Streamen in ein BLOB und dem Setting UTF-8 auf der ZConnection habe ich schon Datensalat bekommen. Die Daten landen dann verändert im BLOB. Daher schalte ich die codepage settings auf der ZConnection für das Schreiben des BLOB Feldes aus und danch wieder an.
Es kann allerdings sein, dass dies mit den neuen Versionen erledigt ist. Habe ich noch nicht getestet.
Gruss
Grundsätzlich ist darauf zu achten, dass alle Ebenen des Systems mit der gleichen Codepage arbeiten. Ansonsten kann es zu unschönen Effekten kommen.
Die meisten aktuellen SQL-Server und Firebird macht da keine Ausnahme, können für Tabellen und manchmal auch für bestimmte Felder Codepages bzw. Collations definieren.
In Deinem Fall müsstest Du die Einstellungen Deines FB Servers kontrollieren welche Collation als Standard defniert ist.
Ab FB 2.0 soll auch der UTF-8 Support OK sein.
Wir nutzen MySQL und PostgreSQL und haben uns dazu entschieden komplett auf UTF-8 zu setzen. Da wir unter Linux arbeiten merken wir die Probleme erst wenn wir für MS-Win crosscompilieren.
Die existierenden Einträge könntest Du über einen Dump sichern, die Datein dann umcodieren (mit einem guten Editor - unter Linux würde sich Kate anbieten) und dann nach der Umstellung der Collation Einstellung für die Tabelle bzw. Datenbank wieder importieren.
Der Import muss dann natürlich mit einem Programm erfolgen welches selbst die Einträge auch als UTF-8 behandeln kann.
Ev. Export in CSV-Datei und dann Re-Import über ein kleines Tool welches Du Dir selbst erstellst.
Aufpassen musst Du noch mit BLOB Felder. Beim Streamen in ein BLOB und dem Setting UTF-8 auf der ZConnection habe ich schon Datensalat bekommen. Die Daten landen dann verändert im BLOB. Daher schalte ich die codepage settings auf der ZConnection für das Schreiben des BLOB Feldes aus und danch wieder an.
Es kann allerdings sein, dass dies mit den neuen Versionen erledigt ist. Habe ich noch nicht getestet.
Gruss
hallo piper
Danke vielmals für deine ausführliche beschreibung, mir bleibt in dem fall wirklich nichts anderes ü("umlaut
")brig dies zu machen und meine DB's von verschiedenen projekten auf utf umzustellen, was noch mühsam ist sind die einzelnen varchar felder in der db die eine codepage zugewiesen haben. ja nu, aber ich denke persönlich auch das die umstellung auf utf8 die mühe wert ist.
Was mir noch aufgefallen ist, ist das die unit's die man in lazarus umstellt nicht die utf 8 einstellungen sichert, es muss jedes mal neu gestzt werden.
aber im grossen und ganzen sollte ich das nun hinkrigen
wird wohl eine nachtsession geben, da ich morgen die software pilotmässig installieren muss, soll...
gruss
Danke vielmals für deine ausführliche beschreibung, mir bleibt in dem fall wirklich nichts anderes ü("umlaut

Was mir noch aufgefallen ist, ist das die unit's die man in lazarus umstellt nicht die utf 8 einstellungen sichert, es muss jedes mal neu gestzt werden.
aber im grossen und ganzen sollte ich das nun hinkrigen

gruss
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable