2010-09-24 12 views
5

Sto analizzando i file RTF 1.5+ generati da Word 2003+ che potrebbero avere contenuti da altre lingue. Questo contenuto è solitamente codificato come letterali esadecimali (\ 'xx). Mi piacerebbe convertire questi valori letterali in valori unicode.Come scoprire la codepage da utilizzare quando si convertono i letterali esadecimali RTF in Unicode

Conosco la tabella codici del mio documento cercando ansicpg (\ ansi \ ansicpg1252).

Quando utilizzo la codepage di ansicpg per la decodifica in Unicode, molte lingue (come il francese) sembrano convertirsi ai valori di char Unicode che mi aspetto.

Tuttavia, quando vedo il testo russo (come di seguito), la codepage 1252 decodifica il contenuto in "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 '.

presumo 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? In tal caso, dove posso trovare informazioni che spieghino come mappare un codice lang * in una codepage? O dovrei cercare qualche altro comando/direttiva RTF per fornirmi le informazioni che sto cercando? (Oppure devo usare \ f277 come riferimento per il font e vedere se ha una codepage associata?)

risposta

2

\lang contrassegna solo particolari tratti del testo come in una particolare lingua e non dovrebbe influire su quale tabella codici deve essere utilizzato per i vecchi escape non Unicode \'.

Mettere un \ansicpg di token 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 un tabella di codici associati?

sembra di sì. la modifica della \fcharset del carattere assegnato ad un determinato tratto di testo è l'unico modo che posso ottenere Word per cambiare il modo in cui tratta i byte, in ogni caso. il i codici in questo token (vedi ad esempio here per la lista) sono, in modo aggravante, di nuovo diverso dall'ID della lingua o dal numero della code page.

+0

Grazie Bobince - questo è esattamente il suggerimento di cui avevo bisogno. Hai ragione, l'intero processo è scomodo, complicato e aggravante. – Malcolm