Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Problem Umlaute/RTF/Mac (https://www.delphipraxis.net/193758-problem-umlaute-rtf-mac.html)

TigerLilly 6. Sep 2017 09:57

Problem Umlaute/RTF/Mac
 
Mein Programm erzeugt ein RTF Dokument. Dazu wird mit Word eine Vorlage von mir erzeugt, als RTF abgespeichert + die Software füllt dann Daten ein.
Der Benutzer öffnet dann das RTF mit dem Programm seiner Wahl - meist MS Word.

So weit so gut.

Jetzt habe ich einen User in der Schweiz, der die Software auf einem Mac mit Parallels einsetzt. Das von meiner Software erzeugte RTF wird dem Mac-Word geöffnet. Auch das funktioniert normalerweise ohne Probleme, aber hier gibt es Probleme mit den Umlauten - die werden nicht korrekt erkannt.

Ich denke, das hat wohl etwas mit dem Zeichensatz zu tun. Die RTF beginnen alle mit
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\
eingeleitet.
Umlaute im RTF sind so abgebildet:
ges\'e4ttigte Fetts\'e4uren

Wer kann mir weiterhelfen? Danke!

nahpets 6. Sep 2017 10:56

AW: Problem Umlaute/RTF/Mac
 
Kennt der Mac die angegebene Codepage aus: {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\

Das müsste Microsoft Windows Codepage 1252 (ANSI) sein.

Schau mal bitte hier http://www.aivosto.com/vbtips/charsets-codepages.html, ob eine Alternative zu finden ist.

Eventuell den Zeichensatz auf UTF-8 wechseln?

TigerLilly 6. Sep 2017 11:24

AW: Problem Umlaute/RTF/Mac
 
Ja, das ist die Windows Codepage.

Wie überprüfe ich, ob der Mac die CP kennt? Und wenn nicht, wie bringe ich sie ihm bei?

Ich wüsste nicht, wie ich auf UTF-8 wechseln sollte, wenn ich mit Word ein neues RTF Dokument erzeuge, wird genau dieser Header erzeugt.

nahpets 6. Sep 2017 11:44

AW: Problem Umlaute/RTF/Mac
 
Lass Dir mal auf dem Mac mit dessen Word ein RTF-Dokument erstellen (mit allen Umlauten) und schau, ob Du da Unterschiede finden kannst.

Wenn ja, müsstest Du schauen, ob Du da "irgendwie flexibel" drauf reagieren kannst.

Ein Ansatz: http://www.aboutvb.de/bas/formate/pdf/rtf.pdf
Dort Tabellen 10.2 und 10.2a

Aus
Code:
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\
müsste (vermutlich) sowas in der Art werden:
Code:
{\rtf1\adeflang1025\mac\HierHabIchKeineInfoFindenKönnenFürDieCodepage\uc1\

mjustin 6. Sep 2017 12:13

AW: Problem Umlaute/RTF/Mac
 
Hallo!
Könntest Du eine RTF Datei und einen Screenshot des auf dem Mac dargestellten Dokuments hier hochladen? Ich arbeite sehr viel mit RTF Konvertierungen.

Für die Konvertierung ist entscheident, welche Codepage dem RTF Text zugewiesen wird - die Codepage steht im RTF Header in der fonttable. Daher brauchtman zur Fehlersuche möglichst ein komplettes, kleines RTF Dokument.

p80286 6. Sep 2017 12:18

AW: Problem Umlaute/RTF/Mac
 
Ich hab da mal was kopiert:
Zitat:

Character Set
After specifying the RTF version, you must declare the default character set used in the document unless it is \ansi (the default). The control word for the character set must precede any plain text or any table control words. The RTF Specification supports the following document character sets <character set>
<character set> (\ansi | \mac | \pc | \pca)? \ansicpgN?

where the control words are defined by
Control word Character set
\ansi ANSI (the default)
\mac Apple Macintosh
\pc IBM PC code page 437
\pca IBM PC code page 850, used by IBM Personal System/2 (not implemented in version 1 of Microsoft Word for OS/2)
\ansicpgN This keyword represents the default ANSI code page used to perform the Unicode to ANSI conversion when writing RTF text. N represents the code page in decimal. This is typically set to the default ANSI code page of the run-time environment (for example, \ansicpg1252 for U.S. Windows). The reader can use the same ANSI code page to convert ANSI text back to Unicode. If it appears, this keyword should be emitted in the RTF header section right after the \ansi, \mac, \pc or \pca keyword. Possible values include those in the following table.
\fbidis Flag written by RichEdit to indicate a single font is active instead of a set of associated fonts.


Code page Name
437 United States IBM
708 Arabic (ASMO 708)
709 Arabic (ASMO 449+, BCON V4)
710 Arabic (transparent Arabic)
711 Arabic (Nafitha Enhanced)
720 Arabic (transparent ASMO)
819 Windows 3.1 (United States and Western Europe)
850 IBM multilingual
852 Eastern European
860 Portuguese
862 Hebrew
863 French Canadian
864 Arabic
865 Norwegian
866 Soviet Union
874 Thai
932 Japanese
936 Simplified Chinese
949 Korean
950 Traditional Chinese
1250 Eastern European
1251 Cyrillic
1252 Western European
1253 Greek
1254 Turkish
1255 Hebrew
1256 Arabic
1257 Baltic
1258 Vietnamese
1361 Johab
10000 MAC Roman
10001 MAC Japan
10004 MAC Arabic
10005 MAC Hebrew
10006 MAC Greek
10007 MAC Cyrillic
10029 MAC Latin2
10081 MAC Turkish
57002 Devanagari
57003 Bengali
57004 Tamil
57005 Telugu
57006 Assamese
57007 Oriya
57008 Kannada
57009 Malayalam
57010 Gujarati
57011 Punjabi

Note that runs of text marked with a particular font index (see \fN in the Font Table section) use the codepage for that font as given by \cpgN or implied by \fcharsetN, unless they use Unicode RTF described in the following section.
Und hier findest Du das vollständige Dokument.

Gruß
K-H

mjustin 6. Sep 2017 12:48

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380391)
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\

Sieht nach einem Microsoft Word 2000 oder neuer Dokument aus, der Header ist ok:

\adeflang1025 = Sprache des Dokuments ist Saudi-Arabisch ("Default language ID for South Asian/Middle Eastern text in Word")
\ansicpg1252 = Windows Code Page 1252 (Westeuropa) als Default für ANSI-Unicode Konvertierung

Dies sind nur die Defaults. Da jeder im Dokument verwendete Font eine anderes Charset (Codepage) angeben kann, ist der Ausschnitt für eine Diagnose zu kurz :)

TigerLilly 6. Sep 2017 14:13

AW: Problem Umlaute/RTF/Mac
 
Liste der Anhänge anzeigen (Anzahl: 2)
Danke für die vielen Tipps. Ich habe eine der RTF-Dateien hochgeladen + einen Screenshot, der (leider unvollständig) zeigt, was das Problem ist.
Die erste Zeile oben soll lauten ... Sie einen Überblick über Ihre Nährstoffversorgung
Der Test findet sich im RTF nicht, weil der von der Software an Stelle von \frtf(tb(’SI-INTRO’))\ eingefügt wird.

Das gekennzeichnete "Ö" ist im Orginal ein "…" - das ist ein einzelnes Zeichen - im RTF \'85

Danke nochmal!

mjustin 6. Sep 2017 16:59

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380436)
Danke für die vielen Tipps. Ich habe eine der RTF-Dateien hochgeladen + einen Screenshot, der (leider unvollständig) zeigt, was das Problem ist.

Auf den ersten Blick sieht der Code zwar ok aus, allerdings ist er mit einer relativ alten Version der RichEdit DLL erstellt worden - anhand der Information im Header "generator Msftedit 5.41.15.1515" kann man annehmen, dass es eine Version zwischen XP und Office 2003 ist, die den RTF Code erzeugt hat.

(Quelle: https://forum.lazarus.freepascal.org...topic=34477.30)

v5.30.23.1230 (included with Windows XP)
v5.31.23.1229 (included with Windows 7)
v5.40.11.2210 (installed with Office XP)
v5.50.99.2050 (installed with Office 2003)
v12.0.4518.1014 (installed with Office 2007)
v14.0.4750.1000 (installed with Office 2010)
v15.0.4420.1017 (installed with Office 2013)
v16.0.6925.1014 (installed with Office 2016)

Es ist möglicherweise so, dass die Mac-Anwendung nur RTF Dateien die von neueren RichEdit Versionen erzeugt wurden korrekt wiedergeben kann.
Wäre es möglich, die Delphi-Anwendung mit einer neueren RichEdit Version zu testen?

Ich nehme an, die Delphi-Anwendung läuft nicht unter MacOS sondern unter Windows, und verwendet daher die unter Windows vorhandene RichEd20.dll?

TigerLilly 6. Sep 2017 17:44

AW: Problem Umlaute/RTF/Mac
 
Hmm. Die RTFs werden auf dem PC mit Word erzeugt - Office 2003. Ich kann mal versuchen, die RTF Vorlagen mit neueren Word Version zu öffnen+zu speichern.

ABER: Üblicherweise funktioniert das ja, also alle anderen Macs, bei denen der Ablauf derselbe ist, stellen die Umlaute richtig dar.

Ich vermute, es hat etwas mit der Schweiz zu tun :-)

nahpets 6. Sep 2017 18:15

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380453)
Ich vermute, es hat etwas mit der Schweiz zu tun :-)

Ja, durchaus, anderer Zeichensatz, andere Ländereinstellungen ...

Es bleibt (vermutlich) nichts anderes übrig, als die Konfiguration des schweizer Mac mal mit einem "heimatlichen" Mac zu vergleichen.

Das Problem muss nicht zwingend bei Word oder in der Software liegen, sondern kann auch in den Systemeinstellungen begründet liegen.

TigerLilly 7. Sep 2017 09:56

AW: Problem Umlaute/RTF/Mac
 
Bei folgendem RTF Teil wird das ä im Bergkäse (Bergk\'E4se) beim ersten Mal falsch und im nächsten Absatz dann richtig dargestellt:

{\rtlch\fcs1 \af36\afs20 \ltrch\fcs0 \f39\insrsid15294940\charrsid1911439 \tab \lang0 100 g Bergk\'E4se 45%
\par \tab \lang0 30 g Walnuss roh
\par \tab \lang0 120 g Ananas roh
\par \tab \lang0 150 g Frischk\'E4se mind. 10% Fett i. Tr.
\par \tab \lang0 1 Portion Speisesalz
\par
}{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f39\insrsid1911439
\par }{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f39\lang1031\langfe1031\langnp1031\insrsid1529494 0\charrsid1911439 {\uc1
{\plain\f643\f648\fs24 Bergk\'E4se

Warum? Und warum nur auf diesem Mac?

bra 7. Sep 2017 10:56

AW: Problem Umlaute/RTF/Mac
 
Vielleicht deshalb:

Zitat:

Zitat von TigerLilly (Beitrag 1380482)
{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f39\insrsid1911439
\par }{\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f39\lang1031\langfe1031\langnp1031\insrsid15294940\charrsid1911439 {\uc1
{\plain\f643\f648\fs24 Bergk\'E4se

Kann das sein, dass der eine Text auf englisch oder irgendwas anderes steht, der zweite Textteil auf deutsch?

TigerLilly 7. Sep 2017 11:06

AW: Problem Umlaute/RTF/Mac
 
Das war auch meine Vermutung. Ich habe versucht, rauszubekommen, welche Tags dazu führen, dass die Umlaute richtig dargestellt werden. NUR diese beiden habens aber nicht gebracht.

Ich hab ein Tag nach dem anderen übernommen, erst als ich \f648 auch hatte, war´s richtig. Aber \f648 alleine war auch nicht genug.

p80286 7. Sep 2017 13:01

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von mjustin (Beitrag 1380425)
Dies sind nur die Defaults.

Jo, RTF by Word ist das reine Chaos. Darum empfehle ich, erst einmal das Word-Dokument aufzuräumen.
In jeder Absatzmarke stecken die Formatinformationen, und es ist mehr als einmal passiert, daß z.B. von Times New Roman auf Letter Gothic und zurück gewechselt wird. Mit anderen Worten, analysiere zunächst einmal das Word-Dokument um dort u.U. vorhandenen Ballast zu entfernen.
Das
Code:
{\plain[B]\f643\f648[/B]\fs24 Bergk\'E4se
weist auf einen unnötigen(?) Fontwechsel hin. Aber um zu wissen was da wirklich dahinter steckt muß die /fonttbl analysiert werden.

Was u.U. ebenfalls Auswirkungen haben könnte ist, die Ausstattung des Zielrechners mit Fonts. Wenn z.B. Courier New angefordert wird, aber nur Courier zur Verfügung steht, fällt das vermutlich erst einmal nicht auf. steht aber z.B. der kursive Ersatz-Font nicht zur Wahl könnte es uU. sein, daß da plötzlich ein Zeichen von Letter Gothic auftaucht.

Ach ja, wer interpretiert eigentlich die RTF-Datei? U.U. könnte ja hier etwas nicht stimmen?

Gruß
K-H

TigerLilly 7. Sep 2017 13:23

AW: Problem Umlaute/RTF/Mac
 
Wie gesagt: Erzeugt wird das RTF mit Word 2003. Meine Software nimmt das RTF, füllt Daten ein + speichert es ansonst unverändert. Die Benutzer meiner Software benutzen Word oder Open Office, um das RTF zu öffnen.

Hat bisher immer funktioniert, auch wenn die Software via Parallels im Mac installiert ist + das Word vom Mac benutzt wurde. Aber jetzt gibt es da diesen Schweizer Mac, auf dem das nicht funktioniert.

Eigentlich kann man es auf diese beiden Absätze reduzieren. Nur das sind die Unterschiede.
{\af36 \lang0 Bergk\'E4se \par}
{\af0 \langnp1031 {\uc1 {\plain\f643\f648 Bergk\'E4s \par}

Aber warum funktioniert das auf allen anderen Rechnern?

mjustin 7. Sep 2017 13:51

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380519)
Aber warum funktioniert das auf allen anderen Rechnern?

Unterschiedliche File Encodings?

http://osxdaily.com/2015/08/11/deter...line-mac-os-x/

Mittels "file -I <dateiname>" meldet Mac OS X, welcher Zeichensatz der Datei zugeordnet wurde.

Falls Ergebnis das auf allen Apple Rechnern gleich ist, fällt es schon mal als Ursache aus.

nahpets 7. Sep 2017 14:16

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380519)
{\af36 \lang0 Bergk\'E4se \par}
{\af0 \langnp1031 {\uc1 {\plain\f643\f648 Bergk\'E4s \par}

Bei so Sachen bin ich immer erstmal ein bisserl naiv:

Wenn die erste Zeile die funktionierende ist, dann in der zweiten das langnp1031 durch lang0 ersetzen, sonst halt andersherum.

Bitte mal auf dieser Seite https://www.safaribooksonline.com/li...2047/ch01.html nach langnp suchen. Hier wird irgendwie die Sprache des folgenden Textes eingestellt und wenn die Sprache kein ä kennt, könnte das eventuell die Problemursache sein.
Eventuell kennt dieser Mac aber auch zufällig die hinter langnp1031 steckende Sprache nicht, während alle anderen damit kein Problem haben.

Laut https://www.science.co.il/language/Locale-codes.php ist 1031 = German - Germany.

Für die Schweiz käme hier 2055 = German - Switzerland infrage. In Österreich könnte dagegen 3079 = German - Austria in die engere Wahl kommen.

Wenn die erste Zeile die funktionierende ist, dann könnte man eventuell ja auch alle nachfolgenden Sprachwechsel der Form \langnp???? weglassen.

Word hat ja durchaus schonmal die Angewohnheit, anhand von (mehr oder weniger zutreffenden) Annahmen, innerhalb eines Dokumentes die Sprache zu wechseln, was ggfls. auch schonmal seltsame Auswirkungen auf die Rechtschreibprüfung haben kann. Eventuell ist hier ja auch sowas in der Art ein (Mit)Verursacher.

Eventuell im Dokument in Word mal alles markieren und dann für das ganze Dokument die Sprache auf Deutsch umstellen.

Ob Word für ein Dokument mehrere Sprachen meint nutzen zu müssen, kann man zuweilen recht gut erkennen, wenn man mit den Cursortasten durchs Dokument wandert und dabei in der Statuszeile auf die angezeigte Sprache achtet. Wenn die sich ändert, so werden mehrere Sprachen genutzt. Und da könnte ich mir dann ggfls. den von Dir beschriebenen Seiteneffekt erklären, ohne dass er zwingend immer und überall auftreten muss.

TigerLilly 7. Sep 2017 15:08

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von mjustin (Beitrag 1380524)
Zitat:

Zitat von TigerLilly (Beitrag 1380519)
Aber warum funktioniert das auf allen anderen Rechnern?

Unterschiedliche File Encodings?

http://osxdaily.com/2015/08/11/deter...line-mac-os-x/

Mittels "file -I <dateiname>" meldet Mac OS X, welcher Zeichensatz der Datei zugeordnet wurde.

Falls Ergebnis das auf allen Apple Rechnern gleich ist, fällt es schon mal als Ursache aus.

Nocheinmal. Einunddieselbe Software erzeugt aus demselben Template das RTF. Das ist über alle Rechner hinweg ident. Die RTFs unterscheiden sich von Rechner zu Rechner auch gar nicht. Das RTF, das auf dem Schweizer Rechner NICHT funktioniert, funktioniert auf einem anderen Mac ohne Probleme - und umgekehrt.

nahpets 7. Sep 2017 16:14

AW: Problem Umlaute/RTF/Mac
 
Zitat:

Zitat von TigerLilly (Beitrag 1380539)
Nocheinmal. Einunddieselbe Software erzeugt aus demselben Template das RTF. Das ist über alle Rechner hinweg ident. Die RTFs unterscheiden sich von Rechner zu Rechner auch gar nicht. Das RTF, das auf dem Schweizer Rechner NICHT funktioniert, funktioniert auf einem anderen Mac ohne Probleme - und umgekehrt.

Das ist durchaus klargeworden und ich hatte auch befürchtete, dass es genau so sein wird.

Daraus schließe ich, dass auf dem schweizer Mac irgendwas fehlt oder anders konfiguriert ist, so dass er nicht in der Lage ist, mit der Sprachsteuerung / Zeichensatzauswahl im RTF uneingeschränkt zurecht kommt.

Daher gibt es nur zwei Lösungsansätze:

Das RTF so umgestalten, dass alle, die bisher damit zurechtkommen auch weiterhin zurechtkommen zuzüglich dem schweizer Mac oder herausfinden, was den schweizer Mac daran hindert, mit dem, was der "Rest der Menschheit" beherrscht, ebenfalls zurechtzukommen.

TigerLilly 11. Okt 2017 10:17

AW: Problem Umlaute/RTF/Mac
 
Ich tappe da immer noch ratlos herum. Öffne ich zB mit OfficeViewer das RTF im Windows-Rechner, passt alles.
Öffne ich das RTF mit dem Mac-Word, sind die Umlaute falsch.

:evil:

TigerLilly 12. Okt 2017 07:17

AW: Problem Umlaute/RTF/Mac
 
Auch gut:
- In Windows mit dem Office-Viewer das RTF öffnen. Ctrl-A Ctrl-C
- Am Mac Word öffnen. Neues Dokument. Ctrl-V (also copy/paste)

Voila. Alle Umlaute richtig da.

p80286 12. Okt 2017 07:27

AW: Problem Umlaute/RTF/Mac
 
Und wie sieht das RTF auf dem Mac jetzt aus?(RTF-Code)
Und wie wird das Mac-RTF unter Windows dargestellt?

Gruß
K-H

TigerLilly 12. Okt 2017 07:41

AW: Problem Umlaute/RTF/Mac
 
Dem bin ich nicht nachgegangen. Ich würde wahrscheinlich einen Unterschied finden, analog dem schon beschriebenen. Aber da ich an der Stelle gar nicht in die RTF Generierung eingreifen kann, macht mich das klüger, aber nicht stärker. :-)

Außerdem hat das wahrscheinlich eher was mit der Spracheinstellung zu tun. Das Tastaturlayout unter Windows ist Deutsch mit Umlauten und der Mac ist jedenfalls ohne Umlaute.

Jumpy 12. Okt 2017 09:36

AW: Problem Umlaute/RTF/Mac
 
Das hat aber nichts mit dem anderen Thread (von dir?) zu tun, wo ja glaub ich das Fazit war, dass das RTF-Dokument nicht korrekt ist? Vielleicht entsteht dann so auch dieser Fehler?

TigerLilly 12. Okt 2017 10:27

AW: Problem Umlaute/RTF/Mac
 
Ja und Nein. Wenn es auf dem Rechner kein Word gibt, suche ich eine Alternative zum Bearbeiten der RTFs. Das ist das Thema des anderen Threads.
Hier geht es um das Windows/Mac Problem, das natürlich mit einer ALternative zu Word auch zu lösen ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 Uhr.

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