Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2015, 20:50   #1
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию Delphi - перекодирование из windows-1251 в utf-8

есть программа которая берет вордовский файл и конвертирует его в .txt. Но вот на выходе файл в кодировке windows-1251, а мне нужен на выходе чтоб был в utf-8. Помогите это сделать.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var W:variant;
var f:TextFile;
var st:string;
begin

if OpenDialog1.Execute then // если выбрали файл *.doc то....
 begin
 W:=CreateOleObject('Word.Application');// создаем объект для работы с ворд
 W.Documents.Open(OpenDialog1.FileName,ReadOnly:=true);
 st:=W.ActiveDocument.Range.Text;
 //------------работа с файлом------------------

 AssignFile(f,'word.txt');
 Rewrite(f);
 Write(f,st);
 closeFile(f);

// убираем объект W из памяти
W.Quit;
W:=UnAssigned;
 end;

end;

Последний раз редактировалось romantik1993; 06.01.2015 в 21:24.
romantik1993 вне форума Ответить с цитированием
Старый 06.01.2015, 21:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если:
Код:
W.ActiveDocument.SaveAs(FileName:='word.txt',FileFormat:=wdFormatUnicodeText);
Где wdFormatUnicodeText по-моему равен 9 (могу ошибаться)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 21:30   #3
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А если:
Код:
W.ActiveDocument.SaveAs(FileName:='word.txt',FileFormat:=wdFormatUnicodeText);
Где wdFormatUnicodeText по-моему равен 9 (могу ошибаться)

чет ругается
Изображения
Тип файла: jpg SNAG-0083.jpg (98.2 Кб, 120 просмотров)
romantik1993 вне форума Ответить с цитированием
Старый 06.01.2015, 21:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну ежкин котофей, ты читать внимательно будешь или тупо копипастэ рулез?
Выше читай что я писал о этом параметре.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2015, 21:39   #5
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А если:
Код:
W.ActiveDocument.SaveAs(FileName:='word.txt',FileFormat:=wdFormatUnicodeText);
Где wdFormatUnicodeText по-моему равен 9 (могу ошибаться)
вы имеете ввиду вот это? Если да то я не совсем понял смысл этого сообщения, при чем тут 9, ему присвоить нужно 9 что ли.
romantik1993 вне форума Ответить с цитированием
Старый 06.01.2015, 21:43   #6
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

понял, щас попробую
romantik1993 вне форума Ответить с цитированием
Старый 06.01.2015, 21:44   #7
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Увы но кодировка сохраняется windows-1251
romantik1993 вне форума Ответить с цитированием
Старый 06.01.2015, 21:56   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... А ты зайди сюда: http://msdn.microsoft.com/ru-ru/libr...nt.saveas.aspx
Сверься с мануалом, какие там есть фички для сохранения.
Например там есть параметр: http://msdn.microsoft.com/ru-ru/libr...oencoding.aspx
Попробуй его примени.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.01.2015, 00:49   #9
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Проблема решена



Код:
var
 W:OLEVariant;
 f:TextFile;
 st:string;
begin
W :=CreateOleObject('Word.Application');
 W.Visible :=False;
 
if not OpenDialog1.Execute then Exit;
 W.Documents.Open(OpenDialog1.FileName);
  st:=AnsiToUtf8(W.ActiveDocument.Range.Text);//здесь можно сразу преобразовать в UTF8
 AssignFile(f, 'word.txt');
 Rewrite(f);
 Write(f, st);
 closeFile(f);
 
W.ActiveDocument.Close;
W.Quit;
W :=UnAssigned;
end;
romantik1993 вне форума Ответить с цитированием
Старый 07.01.2015, 16:37   #10
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,782
По умолчанию

Быдлокод детектед.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
utf-8 -> windows-1251 Lihosvet Visual C++ 10 03.09.2022 16:37
UTF-8 to WINDOWS-1251 Zanooda Общие вопросы Delphi 9 20.07.2011 08:13
php перекодировка из utf-8 в windows-1251 world12_tk PHP 3 25.04.2010 22:55
UTF-8 в Windows-1251 - нужна функция motorway PHP 3 04.07.2009 15:28