Nochmal Umlaute

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
kuhno
UDF-Programmierer
UDF-Programmierer
Beiträge: 54
Registriert: Sa, 07. Jan 2006 17:30
Wohnort: Braunschweig
Kontaktdaten:

Nochmal Umlaute

Beitrag 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
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Drucken Umlaute

Beitrag 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.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag 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)
Zuletzt geändert von Tom am Di, 12. Dez 2006 17:22, insgesamt 1-mal geändert.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag 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
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
kuhno
UDF-Programmierer
UDF-Programmierer
Beiträge: 54
Registriert: Sa, 07. Jan 2006 17:30
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Umlaute

Beitrag von Rolf Ramacher »

Hi Manfred,

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

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
kuhno
UDF-Programmierer
UDF-Programmierer
Beiträge: 54
Registriert: Sa, 07. Jan 2006 17:30
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von kuhno »

Hallo Rolf,

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

Gruß
Manfred
kuhno
UDF-Programmierer
UDF-Programmierer
Beiträge: 54
Registriert: Sa, 07. Jan 2006 17:30
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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.
Gruß
Hubert
kuhno
UDF-Programmierer
UDF-Programmierer
Beiträge: 54
Registriert: Sa, 07. Jan 2006 17:30
Wohnort: Braunschweig
Kontaktdaten:

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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.
Gruß
Hubert
Antworten