2010-09-24 7 views
5

Piszę pliki RTF 1.5+ generowane przez Word 2003+, które mogą zawierać treści z innych języków. Ta treść jest zwykle zakodowana jako literały szesnastkowe (\ 'xx). Chciałbym przekonwertować te literały na wartości Unicode.Jak wykryć stronę kodową używaną podczas konwersji literałów hexowych RTF na Unicode

Znam stronę kodową mojego dokumentu, szukając ansicpg (\ ansi \ ansicpg1252).

Kiedy używam strony kodowej ansicpg do dekodowania do Unicode, wiele języków (np. Francuski) wydaje się konwertować na wartości char unicode, których się spodziewam.

Jednak gdy widzę tekst rosyjski (jak poniżej), strona kodowa 1252 dekoduje zawartość do 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.

Zakładam, że lang1049, langfe1033, langnp1049 powinien zapewnić mi wskazówki, więc mogę programowo wybrać inny (non-domyślne) stronę kodową dla tekstu, że odwołanie? Jeśli tak, to gdzie mogę znaleźć informacje wyjaśniające, jak zamapować kod języka na stronę kodową? Czy powinienem szukać innego polecenia/dyrektywy RTF, by dostarczyć mi informacji, których szukam? (Czy muszę użyć \ f277 jako odnośnika do czcionki i sprawdzić, czy ma on powiązaną stronę kodową?)

Odpowiedz

2

\lang Naprawdę zaznacza tylko poszczególne fragmenty tekstu jako będące w określonym języku i nie powinien wpływać na stronę kodową ma być użyty dla starych uniknięć Unicode \'.

Kładąc \ansicpg żeton w nagłówku powinny być może to zrobić, ale wydaje się być ignorowane przez Word (zarówno surowych bajtów i \' ucieczek.

Albo muszę używać \ f277 jako punkt odniesienia czcionki i zobaczyć jeśli to ma przypisany kodowej?

to wygląda. Zmiana \fcharset czcionki przypisanej do konkretnego odcinka tekstu jest jedynym sposobem mogę Słowo, aby zmienić sposób traktuje bajtów, w każdym razie. na kody w tym tokenie (patrz np. here dla listy), agresywnie, różni się od identyfikatora języka lub numeru strony kodowej.

+0

Dziękuję Bobince - to dokładnie wskazówka, której potrzebowałem. Masz rację, cały proces jest niewygodny, skomplikowany i obciążający. – Malcolm

Powiązane problemy