Cómo descubrir qué página de códigos para el uso al convertir literales RTF hexagonales a Unicode

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

Pregunta

Estoy análisis RTF 1.5+ archivos generados por Word 2003+ que pueden tener contenido de otros idiomas. Este contenido es generalmente codificado como literales hexagonales (\ 'xx). Me gustaría convertir estos literales a valores Unicode.

Sé página de códigos de mi documento mediante la búsqueda de ansicpg (\ ansi \ ansicpg1252).

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

Sin embargo, cuando veo texto ruso (como abajo), la página de códigos 1252 decodifica el contenido de 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.

Asumo que lang1049, langfe1033, langnp1049 debe proporcionarme pistas para que pueda elegir programación un diferente página de códigos (no predeterminada) para el texto que hacen referencia? Si es así, ¿dónde puedo encontrar información que explica cómo asignar un código lang * a una página de códigos? O debería estar buscando algún otro comando RTF / Directiva de proporcionarme la información que estoy buscando? (O debo utilizar \ f277 como referencia fuente y ver si tiene una página de códigos asociada?)

¿Fue útil?

Solución

\lang realmente únicas marcas hasta particulares tramos del texto como estar en un idioma en particular, y no deben tener repercusiones en qué página de código se va a utilizar para los viejos escapes \' no Unicode.

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

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

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. Los códigos en esta muestra (véase, por ejemplo aquí para la lista) son, aggravatingly, diferente otra vez, ya sea del el lenguaje de identidad o el número de página de código.

Otros consejos

No es tan claro, pero se puede utilizar el control RichEdit con el fin de convertir el RTF a formato UTF-8 de acuerdo con el MSDN: http://msdn.microsoft. com / es-es / library / ventanas / escritorio / bb774304 (v = vs.85) .aspx Echar un vistazo a la SF_USECODEPAGE para el mensaje EM_STREAMOUT.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top