Come scoprire che cosa tabella codici da utilizzare per la conversione di formato RTF letterali esadecimali a Unicode

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

Domanda

Sono parsing RTF 1.5+ file generati da Word 2003+ che possono avere contenuti da altre lingue. Questo contenuto è generalmente codificato come letterali esagonali (\ 'xx). Vorrei convertire questi letterali ai valori Unicode.

So pagina di codice del mio documento con la ricerca di ansicpg (\ ansi \ ansicpg1252).

Quando uso la tabella di codici ansicpg per decodificare in Unicode, molti linguaggi (come il francese) sembrano convertire i valori char Unicode che mi aspetto.

Tuttavia, quando vedo testo russo (come qui di seguito), tabella di codici 1252 decodifica il contenuto di 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.

Suppongo che lang1049, langfe1033, langnp1049 dovrebbe fornirmi indizi in modo da poter scegliere un livello di codice diverso (non predefinita) pagina di codice per il testo che fanno riferimento? Se sì, dove posso trovare le informazioni che spiega come mappare un codice lang * a una tabella codici? O dovrei essere alla ricerca di qualche altro comando RTF / direttiva di fornire me con le informazioni che sto cercando? (O devo usare \ f277 come riferimento di carattere e vedere se ha una tabella codici associata?)

È stato utile?

Soluzione

\lang in realtà solo segni fino particolari tratti del testo come essere in una particolare lingua, e non dovrebbe impatto quale pagina di codice deve essere utilizzato per i vecchi fughe \' non Unicode.

Mettere un gettone \ansicpg nell'intestazione dovrebbe forse farlo, ma sembra essere ignorato da Word (per entrambi i byte prime e fughe \'.

  

o devo usare \ f277 come riferimento di carattere e vedere se ha una tabella codici associata?

Si presenta in questo modo. Modifica della \fcharset del carattere assegnato ad un determinato tratto di testo è l'unico modo che posso ottenere Word per cambiare modo in cui tratta i byte, in ogni caso. I codici a questo token (vedi ad esempio qui listino) sono, aggravatingly, ancora diverso sia dal lingua d'identità o il numero di pagina di codice.

Altri suggerimenti

Non è così chiara, ma è possibile utilizzare il controllo RichEdit al fine di convertire il formato RTF al formato UTF-8 a seconda del MSDN: http://msdn.microsoft. com / it-it / library / windows / desktop / bb774304 (v = vs.85) aspx Date un'occhiata al SF_USECODEPAGE per il messaggio EM_STREAMOUT.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top