Comment découvrir ce codepage à utiliser lors de la conversion littéraux hexadécimaux RTF à Unicode

StackOverflow https://stackoverflow.com/questions/3787837

Question

Je l'analyse des fichiers RTF 1.5+ générés par Word 2003+ qui peuvent avoir le contenu d'autres langues. Ce contenu est généralement codé comme littéraux hexadécimaux (\ 'xx). Je voudrais convertir ces littéraux aux valeurs unicode.

Je sais que la page de code de mon document en recherchant ansicpg (\ ansi \ ansicpg1252).

Quand j'utilise la page de code ansicpg pour décoder Unicode, de nombreuses langues (comme le français) semblent convertir les valeurs char Unicode que je pense.

Cependant, quand je vois le texte russe (comme ci-dessous), codepage 1252 décode le contenu de charabia.

\ 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.

Je suppose que lang1049, langfe1033, langnp1049 devrait me fournir des indices pour que je puisse choisir un programme différent (non par défaut) page de code pour le texte qu'ils font référence? Si oui, où puis-je trouver des informations qui explique comment associer un code lang * à une page de code? Ou devrais-je être à la recherche d'une autre commande RTF / directive pour me fournir les informations que je cherche? (Ou dois-je utiliser \ F277 comme une référence de police et voir si elle a un associé codepage?)

Était-ce utile?

La solution

\lang vraiment que les marques haut de certains tronçons du texte comme étant dans une langue particulière, et ne devrait pas affecter quelle page code doit être utilisé pour les anciens échappe \' non Unicode.

Mettre \ansicpg jeton dans l'en-tête devrait peut-être le faire, mais semble être ignoré par Word (pour les octets bruts et échappe \'.

  

Ou dois-je utiliser \ F277 comme une référence de police et voir si elle a un associé codepage?

Il semble de cette façon. Modification du \fcharset de la police affectée à un tronçon particulier de texte est la seule façon que je peux obtenir Word pour modifier la façon dont il traite les octets, de toute façon. Les codes dans ce jeton (voir par exemple pour la liste) sont, aggravatingly, encore différent soit de la langue ID ou le numéro de page de code.

Autres conseils

Il est pas clair, mais vous pouvez utiliser le contrôle RichEdit afin de convertir le format RTF au format UTF-8 selon le MSDN: http://msdn.microsoft. com / fr-fr / bibliothèque / windows / bureau / bb774304 (v = vs.85) .aspx Jetez un oeil à la SF_USECODEPAGE pour le message EM_STREAMOUT.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top