Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.168.84] |
|
Сообщ.
#1
,
|
|
|
Проблема в следующем:
Я пытаюсь извлечь текст(и только) из Word-овского файла Для этого открываю stream WordDocument,cчитываю из него начало и длину текста,(согласно FIB),и считываю текст. Пока текст английский - все OK,вместо русского какая-то галиматья(цифры ,черточки) Может кто знает как из данного stream-a можно корректно считать русский текст ? Помогитеее!!!! |
Сообщ.
#2
,
|
|
|
Я уже тебе писал, что в MS Word 97 и выше текст хранится в формате Unicode.
Используй WideCharToMultiByte для преобразования в ANSI. Примерно так: WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)pSrc, iNumChars, pDest, iNumChars, NULL, NULL); Я не знаю читал ты, что я тебе писал в старом форуме про получение текста из doc (стрим WordDocument). Чтобы не быть голословным, я проверил и все работает - никакой галиматьи! |
Сообщ.
#3
,
|
|
|
Прежде всего,большое спасибо ritvin-е!!
Все было очень ценно как в прошлом форуме,так и в настоящем,однако же не все так быстро доходит! Есть,однако еще одна проблема: При использовании WideCharToMultiByte (см Выше) русские символы читаются,но теперь вместо английских получаю "?"(т.н. DefaultChar) Я попробовал использовать WideChar... только с русскими символами(используя смекалку),но может есть способ лучше?! Помогитееее!!! |
Сообщ.
#4
,
|
|
|
Смекалка - лучший помошник.
Надо её уважать, и не искать способ лучше. |
Сообщ.
#5
,
|
|
|
Нет другого более корректного способа нет!
Вся штука в том, что функция WideCharToMultiByte работает только с языками, установленными в ОС. Боюсь, что "?" - это не английский язык или пытаешься перекодировать документ более раннего формата, где символы хранятся в ANSI! Английский Unicode - это 0x0 и код символа ANSI, поэтому вручную английский Unicode в ANSI переводится простым пропуском нулевых байтов. Резюмируя: Используй функцию WideCharToMultiByte, но перед ее использованием проверяй текст на кодировку Unicode с помощью IsTextUnicode. В случае неудачного результата считай что текст уже в кодировке ANSI |
Сообщ.
#6
,
|
|
|
Однако еще из прошлого форума остался вопрос,как считать текст(и только) из RTF файла.Вроде все делаю по MSDN : создаю RichEdit20A,чтоб потом считать с него текст,
использую сообщение EM_STREAMIN,а только если файл содержит русский текст,то вообще ничего не читается (обычный richedit вел себя также) Может кто знает как тут быть,а то совсем замучился,кто знает , помогитееее!!!! |
Сообщ.
#7
,
|
|
|
Вопрос снимается....
Всего-то нужно было в Callback функции читать из файла не cb байт а cb-1... |
Сообщ.
#8
,
|
|
|
Попробуй зашли пару десятков тысяч символов в ричьедит и попробуй получить текст в РТФ!!! Придется склеивать тексты, ведь в колбэк ф-цию прога будет заходить несколько раззз. Я тоже подкололся на этом
Удачи... |