Unicodezeichen im RTF Stream

11/06/2008 - 00:24 von Marcel Beutner | Report spam
Hallo NG,

meine Frage hat zwar nicht direkt etwas mit csharp zu tun, aber vielleicht
kann mir dennoch jemand helfen. Ich bin gerade an der Entwicklung eines
HTML2RTF Converters. Dieser Converter soll auch Unicode Zeichen
unterstützten.
Der RTF-Standard sieht es vor die entsprechenden Zeichen mit angabe des
Zeichensatzes als Hexadezimalzahl anzugeben. Ein RTF-Stream mit einem
Unicodezeichen wird wie folgt gespeichert:


{tf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fprq2\fcharset129
@Arial Unicode MS;}{\f1\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit
5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20\'c1\'52\f1\par
}


Das 'c1\'52 ist das gewünschte Zeichen. Jetzt meine Frage: Wie wird der
Code eigtl. berechnet? Mit UrlEncode oder GetBytes wird mir ein andere
Wert ausgegeben. Auch der RTF-Referenz, die bei Microsoft zum download
angeboten wird, kann ich keine hilfreichen Informationen darüber entnehmen.

Vielen Dank!
Marcel
 

Lesen sie die antworten

#1 Frank Dzaebel
11/06/2008 - 07:50 | Warnen spam
Hallo Marcel,

Der RTF-Standard sieht es vor die entsprechenden Zeichen mit angabe des
Zeichensatzes als Hexadezimalzahl anzugeben. Ein RTF-Stream mit einem
Unicodezeichen wird wie folgt gespeichert: [...]
Das 'c1\'52 ist das gewünschte Zeichen. Jetzt meine Frage: Wie wird der
Code eigtl. berechnet?



Das ist "quasi" die hexadezimale Position im Font.
Die RTF-Spezifikation ist da zwar schon eine Grundlage, aber sie
kann Dir natürlich nicht die Positionen aller Character in
den einzelnen Fonts ersichtlich machen.
Du musst die Codepages und Font berücksichtigen, die
am Anfang angegeben sind (hier wichtig:
"fcharset129 @Arial Unicode MS"). In Word kannst Du
das ggf. gut sehen, wenn Du "Einfügen/Symbol/Schriftart [Arial Unicode MS]"
auswàhlst. Dann auf "Zeichencode" [C152 <Unicode (hex)>] herunterblàttern.

Trotzdem als Referenz-Link:

[Download details: Word 2002 Tool: Rich Text Format Specification]
http://www.microsoft.com/downloads/...x?FamilyIDåb8ebc2-6ad6-49f0-8c90-e4f763e3f04f&amp;DisplayLang=en&displaylang=en

Ist eigentlich nicht unbedingt ein C# Thema.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen