2010-09-24 9 views
5

Estoy analizando RTF 1.5+ archivos generados por Word 2003+ que pueden tener contenido de otros idiomas. Este contenido generalmente se codifica como literales hexadecimales (\ 'xx). Me gustaría convertir estos literales a valores Unicode.Cómo descubrir qué página de códigos usar al convertir literales hexadecimales RTF a Unicode

Conozco la página de códigos de mi documento buscando ansicpg (\ ansi \ ansicpg1252).

Cuando uso la página de códigos ansicpg para decodificar a Unicode, muchos idiomas (como el francés) parecen convertir a los valores de caracteres Unicode que espero.

Sin embargo, cuando veo texto en ruso (como a continuación), la página de códigos decodifica el contenido en jibberish.

\ f277 \ lang1049 \ langfe1033 \ langnp1049 \ insrsid5989826 \ charrsid6817286 \ 'd1 \' f2 \ 'f0 \' e0 \ 'ed \' e8 \ 'f6 \' fb \ 'e1 \' e5 \ 'e7 \ 'ee \' 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.

que asumen que lang1049, langfe1033, langnp1049 debe proporcionarme pistas para que pueda elegir mediante programación una página diferente (no predeterminada) código de texto que hacen referencia? De ser así, ¿dónde puedo encontrar información que explique cómo asignar un código lang * a una página de códigos? ¿O debería buscar alguna otra orden/directiva RTF para proporcionarme la información que estoy buscando? (¿O debo usar \ f277 como referencia de fuente y ver si tiene una página de códigos asociada?)

Respuesta

2

\lang realmente solo marca los tramos particulares del texto como estar en un idioma particular, y no debe afectar la página de códigos se debe utilizar para los antiguos escapes no Unicode \'.

Poner un token de \ansicpg en la cabecera quizá debería hacerlo, pero parece ser ignorado por la Palabra (tanto para los bytes primas y \' escapa.

o tengo que usar \ f277 como referencia la fuente y ver si tiene una página de códigos asociado?

se ve de esa manera. cambio de la \fcharset de la fuente asignada a un tramo determinado de texto es la única manera que puedo conseguir Palabra para cambiar la forma en que trata a los bytes, de todos modos. la los códigos en este token (véase, por ejemplo, here para la lista) son, de manera agravante, diferente una vez más de la ID de idioma o el número de página de códigos.

+0

Gracias Bobince - ese es exactamente el consejo que necesitaba. Tienes razón, todo el proceso es incómodo, complicado y agravante. – Malcolm

Cuestiones relacionadas