На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Как прочитать русский текст из WordDocument
    Проблема в следующем:
    Я пытаюсь извлечь текст(и только) из Word-овского файла
    Для этого открываю stream WordDocument,cчитываю из него начало и длину текста,(согласно FIB),и считываю текст.
    Пока текст английский - все OK,вместо русского какая-то галиматья(цифры ,черточки)
    Может кто знает как из данного stream-a можно корректно считать русский текст ?
    Помогитеее!!!!
      Я уже тебе писал, что в MS Word 97 и выше текст хранится в формате Unicode.
      Используй WideCharToMultiByte для преобразования в ANSI.

      Примерно так:

      WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)pSrc, iNumChars, pDest, iNumChars, NULL, NULL);

      Я не знаю читал ты, что я тебе писал в старом форуме про получение текста из doc (стрим WordDocument). Чтобы не быть голословным, я проверил и все работает - никакой галиматьи!
        Прежде всего,большое спасибо ritvin-е!!
        Все было очень ценно как в прошлом форуме,так и в настоящем,однако же не все так быстро доходит!
        Есть,однако еще одна проблема:
        При использовании WideCharToMultiByte (см Выше)
        русские символы читаются,но теперь вместо английских получаю "?"(т.н. DefaultChar)
        Я попробовал использовать WideChar... только с русскими символами(используя смекалку),но может есть способ лучше?!
        Помогитееее!!!
          Смекалка - лучший помошник.
          Надо её уважать, и не искать способ лучше.
            Нет другого более корректного способа нет!

            Вся штука в том, что функция WideCharToMultiByte работает только с языками, установленными в ОС.

            Боюсь, что "?" - это не английский язык или пытаешься перекодировать документ более раннего формата, где символы хранятся в ANSI!

            Английский Unicode - это 0x0 и код символа ANSI, поэтому вручную английский Unicode в ANSI переводится простым пропуском нулевых байтов.

            Резюмируя:
            Используй функцию WideCharToMultiByte, но перед ее использованием проверяй текст на кодировку Unicode с помощью IsTextUnicode. В случае неудачного результата считай что текст уже в кодировке ANSI
              Однако еще из прошлого форума остался вопрос,как считать текст(и только) из RTF файла.Вроде все делаю по MSDN : создаю RichEdit20A,чтоб потом считать с него текст,
              использую сообщение EM_STREAMIN,а только если файл содержит русский текст,то вообще ничего не читается (обычный richedit вел себя также)
              Может кто знает как тут быть,а то совсем замучился,кто знает ,
              помогитееее!!!!
                Вопрос снимается....
                Всего-то нужно было в Callback функции читать из файла не cb байт а cb-1...
                  Попробуй зашли пару десятков тысяч символов в ричьедит и попробуй получить текст в РТФ!!! Придется склеивать тексты, ведь в колбэк ф-цию прога будет заходить несколько раззз. Я тоже подкололся на этом :(

                  Удачи...
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0223 ]   [ 15 queries used ]   [ Generated: 18.05.24, 06:27 GMT ]