Seite 1 von 1

Nochmal Umlaute

Verfasst: Di, 12. Dez 2006 15:07
von kuhno
Hallo zusammen,

ich wollte nicht in den Thread mit dem HP und Umlauten reinposten.

Bei ist folgendes Problem aufgetreten: Die Umlaute äöü werden aus der PostgreSQL Datenbank als Ansi-Zeichen gesendet. Eine ConvToOemCP macht daraus in XBase++ lesbare Zeichen. Beim abspeichern der Daten Konvertierung zu Ansi geht auch. Bislang kein Problem. Nun aber: Beim ß (sz) versagt diese Methode. In der einen Darstellung (Oem) kommt es als * und die Umlaute sind richtig, ohne Konvertierung zu Oem steht irgend was kryptisches da und die Umlaute sind auch im Eimer.

Liegt das evtl am Zeichensatz? Die verwendeten Zeichensätze sind Times New Roman, Arial und Courier New.

Oder gibt es da ein grundsätzliches Problem bei Umlauten? Ach ja, die Darstellung auf dem Monitor ist ok, aber beim Druck in RTF-Datei mit dem Paket RTF150 GUI-Mode tritt dieser Fehler auf.

Gruß
Manfred Kuhn

Drucken Umlaute

Verfasst: Di, 12. Dez 2006 16:08
von Rolf Ramacher
Hallo Kuhno,


schreib doch mal den Text wo das ß vorkommt mit memowrit in eine textdatei und prüfe mal was dann drin steht.

Vermutlich kommt das Zeichen nicht sauber bei xbase an.

Verfasst: Di, 12. Dez 2006 16:15
von Tom
ConvToOemCp(ConvToAnsiCP('ß')) liefert 'ß' zurück. Daran liegt es nicht. Aber ein ß wird in RTF so repräsentiert:

\'df

Also aus "beißen" wird "bei\'dfen". Ich vermute, hier liegt Dein Problem. RTF beherrscht ßs nicht, genausowenig wie HTML, jedenfalls nicht als direkt repräsentiertes Zeichen. Erzeuge mal mit WordPad einen kurzen Text, der Umlaute, ßs usw. enthält, und schau Dir den mit einem Editor an.

Verfasst: Di, 12. Dez 2006 16:19
von Tom
Diese Funktion konvertiert einen OEM-Text für die RTF-Repräsentation:

Function ToRTF (cZeile)
cZeile := StrTran(cZeile,"ä","\'e4")
cZeile := StrTran(cZeile,"ö","\'f6")
cZeile := StrTran(cZeile,"ü","\'fc")
cZeile := StrTran(cZeile,"Ä","\'c4")
cZeile := StrTran(cZeile,"Ö","\'d6")
cZeile := StrTran(cZeile,"Ü","\'dc")
cZeile := StrTran(cZeile,"ß","\'df")
cZeile := StrTran(cZeile,"§","\'a7")
cZeile := "\par "+cZeile
RETURN (cZeile)

Verfasst: Di, 12. Dez 2006 17:51
von Martin Altmann
Hallo Tom,
Tom hat geschrieben:RTF beherrscht ßs nicht, genausowenig wie HTML, jedenfalls nicht als direkt repräsentiertes Zeichen.
das stimmt so pauschal nicht! Sowohl Word als auch WordPad können Umlaute in RTF interpretieren und verarbeiten (ich mache meine RTF-Dateien selber und haue den Text nur mit ConvToAnsiCp() in diese Dateien).
Aber sauber ist es nicht und Probleme in "anderen Welten" sind vorprogrammiert.

Viele Grüße,
Martin

Verfasst: Di, 12. Dez 2006 22:37
von kuhno
Danke erstmal für die Antworten.

Das ö wird korrekt als "\'f6" dargestellt ( in Hex 5C 27 66 36 ).
Beim ß wird nur das Zeichen * ausgegeben (in Hex 2A).

Beim Betrachten des Datensatzes mit PostgreSQL Manager ist das Zeichen aber richtig.

Alle anderen Umlaute sind richtig.

Gruß
Manfred

Umlaute

Verfasst: Mi, 13. Dez 2006 15:26
von Rolf Ramacher
Hi Manfred,

wie wäre es, wenn du das gelieferte Zeichen mit strtran als Chr(225) ersetzt. Chr(225) ist ja "ß"

Verfasst: Mi, 13. Dez 2006 22:02
von kuhno
Hallo Rolf,

hab ich probiert, ändert sich nix. Ob nun CHR(225) oder CHR(0225) ist eigentlich egal. :cry:

Gruß
Manfred

Verfasst: Do, 14. Dez 2006 21:37
von kuhno
Hallo nochmal,

ich hab jetzt alles mögliche probiert. Mit StrTran("Vo*","ß","s") wird daraus beim RTF-Druck ein "Vos". Das Zeichen * muss also ein ß sein, sonst würde ja nicht getauscht. Nur in der Datei steht der Stern. Wenn ich "\`df" als Austausch angebe, dann steht im Text Vo\'df und das kanns ja auch nicht sein. Was gibts da noch für Möglichkeiten, die übersehen habe?

Schönen Gruß
Manfred

Verfasst: Do, 14. Dez 2006 23:13
von brandelh
Hallo Kuhno,

sicherheitshalber möchte ich fragen ob ich richtig verstanden habe, dass die Zeichen aus der PostGreSQL auch mit Umlauten sauber in der GUI Oberfläche (Xbparts von XbpDialog etc.) angezeigt werden.

Dein Problem bezieht sich auf das Drucken von RTF Dateien oder ?

Ich würde mal diesen RTF Quellcode abspeichern und mit z.B. Word oder WordPad öffnen und drucken. Sind dort auch die Fehler vorhanden ?

So könnte man sich dem Fehler nähern.

Verfasst: Fr, 15. Dez 2006 18:34
von kuhno
Hallo Hubert,

sicherheitshalber möchte ich fragen ob ich richtig verstanden habe, dass die Zeichen aus der PostGreSQL auch mit Umlauten sauber in der GUI Oberfläche (Xbparts von XbpDialog etc.) angezeigt werden.
Ja, dieser Fehler tritt in der GUI nicht auf.
Dein Problem bezieht sich auf das Drucken von RTF Dateien oder ?
Ja, nur beim Druck in die RTF-Datei. Mit Open Office Writer und mit WordPad sind die Fehler (statt ß ein * ) identisch.

Gruß

Manfred

Verfasst: Fr, 15. Dez 2006 23:03
von brandelh
kuhno hat geschrieben:Ja, nur beim Druck in die RTF-Datei. Mit Open Office Writer und mit WordPad sind die Fehler (statt ß ein * ) identisch.
Also wenn du in OpenOffice Writer oder WordPad ein Dokument erstellst, das unter RTF abspeicherst und dann druckst, hast du dann auch den Fehler ?

Wenn ja, ist dein Druckertreiber nicht OK.