Получение SurrogatePairs из документов MS Word

Мы написали и приложение, которое откроет документы Microsoft Word, прочитает весь текст внутри, а затем отправит эти данные во внешнюю систему для обработки. В прошлом это работало нормально, но с тех пор, как мы приняли Unicode, у нас возникли некоторые проблемы с чтением документов Word.

Проблемы, с которыми мы сталкиваемся, заключаются в том, что мы не можем отобразить символы, которые занимают более одной единицы кода, например (суррогатная пара) или ā, (кластер графем). Когда мы пытаемся отобразить, мы получаем два??, а с ̈, мы получаем каждого отдельного персонажа, который составляет графему.

У меня такое ощущение, что причина, по которой мы видим эти символы, возвращаемые таким образом, заключается в том, что мы не читаем в файле должным образом. Однако я искал и не нашел решения.

Я создал документ Word, который содержит только одно значение: .

Первое, что мы делаем в коде, это читаем файл в байтовый массив:

FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);

wordDocument = new byte[fileStream.Length];
fileStream.Read(wordDocument, 0, (int)fileStream.Length);

fileStream.Close();

При дальнейшем исследовании байтовый массив содержит следующие значения:

{63, 63, 10, 13}, or in hex {0x3f, 0x3f, 0x0d, 0x0a}

Просматривая шестнадцатеричные значения, я узнал, что 0x3f относится к?, Что объясняет, почему мы возвращаемся к двум??.

Затем, когда мы пытаемся преобразовать данные обратно в строку, мы в конечном итоге получаем обратно два??

textdata = System.Text.Encoding.Unicode.GetString(wordDocument);

Я полагаю, что проблема может заключаться в том, как мы читаем в документе, но я не уверен на 100%. Кто-нибудь может направить меня на правильный путь?

1 ответ

Решение

Вы можете использовать MS Office Primary Interop Assembly для доступа к объектной модели текстового документа. Попробуйте добавить ссылку на сборку в Visual Studio (например, Office 12 или Microsoft Word 12 и т. Д.). Проверьте эту ссылку. Там есть некоторые основы.

Другие вопросы по тегам