Frage

Ich bin Parsen RTF 1.5+ Dateien erzeugt von Word 2003+, die Inhalte aus anderen Sprachen haben. Dieser Inhalt wird in der Regel als hex Literale (\ 'xx) kodiert. Ich möchte diese Literale Unicode-Werte konvertieren.

Ich weiß Code meines Dokuments Seite durch die Suche nach ansicpg (\ ansi \ ansicpg1252).

Wenn ich die ansicpg Codepage zu dekodieren zu Unicode verwenden, scheinen viele Sprachen (wie Französisch) zu dem Unicode-Zeichen-Wert zu konvertieren, dass ich erwartet.

Allerdings, wenn ich Russisch Text sehen (wie unten), Codepage 1252 decodiert den Inhalt jibberish.

\ F277 \ lang1049 \ langfe1033 \ langnp1049 \ insrsid5989826 \ charrsid6817286 \ 'D1 \' f2 \ 'f0 \' e0 \ 'ed \' e8 \ 'f6 \' fb \ 'e1 \' e5 \ 'e7 \' ed \ 'e0 \' e7 \ 'e2 \' e0 \‘ ed \ 'e8 \' ff. \ 'Dd \' f2 \ 'E0 \' f1 \ 'f2 \' f0 \ 'e0 \' ed \ 'e8 \' f6 \ 'e0 \' ed \ 'e5 \' e4 \ 'ee \' eb \ 'e6 \' ed \‘ e0 \ 'Ee \' f2 \ 'ee \' e1 \ 'f0 \' e0 \ 'e6 \' e0 \ 'f2 \' fc \ 'f1 \' ff \ 'e2 \' f2 \ 'e0 \' e1 \‘ eb \ 'e8 \' f6 \ 'e5 \ 'E2 \' f1 \ 'ee \' e4 \ 'e5 \' f0 \ 'e6 \' e0 \ 'ed \' e8 \ 'e8.

Ich gehe davon aus, dass lang1049, langfe1033, langnp1049 mir Hinweise geben sollte, damit ich programmatisch können wählen, eine andere (Nicht-Standard) Codepage für den Text, den sie sich beziehen? Wenn ja, wo finde ich Informationen, die erläutert, wie ein lang * Code in eine Codepage zur Karte? Oder sollte ich für eine andere RTF-Befehl / directive suchen um mich mit den Informationen, die ich suche? (Oder muß ich \ F277 als Schrift Referenz und sehen, ob es eine zugehörige Codepage hat?)

War es hilfreich?

Lösung

\lang wirklich nur Markierungen auf bestimmten Strecken des Textes in einer bestimmten Sprache zu sein, und sollte nicht Auswirkungen, welche Codepage ist für die alten Nicht-Unicode-\' entkommt verwendet werden.

Setzen eines \ansicpg Token im Header sollte es vielleicht tun, aber scheint von Word ignoriert werden (für beide Roh-Bytes und \' entkommt.

Oder muß ich \ F277 als Schrift Referenz und sehen, ob es eine zugehörige Codepage hat?

Es sieht so aus. Ändern das \fcharset der Schriftart auf eine bestimmte Strecke von Text zugewiesen ist die einzige Art, wie ich Word ändern bekommen kann, wie es den Bytes behandelt, sowieso. Die Codes in diesem Token (siehe zB hier Liste) sind, aggravatingly, wieder anders aus entweder dem Sprach-ID oder die Codepage-Nummer.

Andere Tipps

Es ist nicht so klar, aber Sie das RichEdit-Steuerelement verwenden können, um die RTF in UTF-8-Format zu konvertieren nach dem MSDN: http://msdn.microsoft. com / en-us / library / windows / Desktop / bb774304 (v = VS.85) aspx Werfen Sie einen Blick auf die SF_USECODEPAGE für die EM_STREAMOUT Nachricht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top