Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/160: Рейтинг темы: голосов - 160, средняя оценка - 4.88
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669

Перекодирование из windows-1251 в utf-8

06.01.2015, 20:49. Показов 31828. Ответов 10
Метки нет (Все метки)

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
 //------------работа с файлом------------------
 
 f:=windows-1251ToUtf8(f);
 AssignFile(f,'word.txt');
 Rewrite(f);
 Write(f,st);
 closeFile(f);
 
// убираем объект W из памяти
W.Quit;
W:=UnAssigned;
 end;
 
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2015, 20:49
Ответы с готовыми решениями:

UTF-8 to WINDOWS-1251
Здравствуйте! Надо вот чего... Есть строка в UTF-8. После перекодировки функцией `UTF8ToString` выползает НЕ-UTF-8. Только хреново...

Кодировка в Delphi Windows-1251 -> UTF-8 uurlencoded
Добрый вечер дорогие формучане, требуется помощь, бьюсь уже неделю, не могу ничего найти в интернете, что решало бы мой вопрос, надеюсь вот...

Windows-1251
привет всем,нужно распарсить сайт,но получаемый код(html сайта) у меня с закорючками вместо русских букв там же в html'e <meta...

10
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,248
06.01.2015, 21:03
Цитата Сообщение от Programmer1993 Посмотреть сообщение
на выходе файл в кодировке windows-1251, а мне нужен на выходе чтоб был в utf-8
AnsiToUTF8().
1
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
06.01.2015, 21:23  [ТС]
не катит
Миниатюры
Перекодирование из windows-1251 в utf-8  
0
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,248
06.01.2015, 21:43
Цитата Сообщение от Programmer1993 Посмотреть сообщение
не катит
Конечно. Нужно конвертировать строки из файла
Delphi
1
st :=AnsiToUtf8(st);
Зачем Вы трогаете переменную инициализации выходного файла f? Да, и процедура самой конвертации выглядит некорректно.

Добавлено через 1 минуту
Цитата Сообщение от Programmer1993 Посмотреть сообщение
var W:variant;
var f:TextFile;
var st:string;
жесткое начало
1
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
06.01.2015, 21:57  [ТС]
Цитата Сообщение от droider Посмотреть сообщение
Зачем Вы трогаете переменную инициализации выходного файла f? Да, и процедура самой конвертации выглядит некорректно.
Добавлено через 1 минуту
Сообщение от Programmer1993
var W:variant;
var f:TextFile;
var st:string;
жесткое начало
Ну уж как получилось,



Цитата Сообщение от droider Посмотреть сообщение
Код Delphi
1
st :=AnsiToUtf8(st);
а с этим не получилось, кодировка осталась
0
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,248
06.01.2015, 22:00
Цитата Сообщение от Programmer1993 Посмотреть сообщение
кодировка осталась
у Вас Delphi 7? Проблем быть не должно.
1
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
06.01.2015, 22:05  [ТС]
Цитата Сообщение от droider Посмотреть сообщение
у Вас Delphi 7? Проблем быть не должно.
Да, делфи 7, может я что то не так делаю и не туда вставляю ваш код, как должен выглядить код? Куда именно вставлять вашу строчку.
0
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,248
06.01.2015, 23:00
Лучший ответ Сообщение было отмечено Programmer1993 как решение

Решение

Programmer1993, подправил Ваш код
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
Проверил. Все Ок. Notepad++ показал кодировку ANSI as UTF-8, т.е. кодировка меняется. Обычный Блокнот тоже изменил кодировку, но не отобразил визуальных изменений.
Зато если открыть выходной файл через WordPad, то наглядно видны изменения. Или можно для проверки кинуть на форму Memo и написать так
Delphi
1
2
3
4
5
6
7
8
...
...
if not OpenDialog1.Execute then Exit;
 W.Documents.Open(OpenDialog1.FileName);
  st:=AnsiToUtf8(W.ActiveDocument.Range.Text);
  Memo1.Text :=st; //проверьте с AnsiToUtf8 и без
...
...
Увидите разницу.
2
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
06.01.2015, 23:02  [ТС]
Вот да, теперь вижу, СПАСИБО
0
Эксперт Pascal/Delphi
 Аватар для droider
4882 / 2819 / 862
Регистрация: 04.10.2012
Сообщений: 10,248
06.01.2015, 23:04
Цитата Сообщение от Programmer1993 Посмотреть сообщение
теперь вижу
Хорошо. Успехов.
1
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
07.01.2015, 00:45  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2015, 00:45
Помогаю со студенческими работами здесь

Кодировать текст в windows 1251
Считываю в Memo текст из файла. Как можно преобразовать текст в кодировку windows 1251 Т.е Memo1.Text:= oFile.Text; нужно кодировку...

UTF-16 -> cp-1251(windows-1251)
У меня есть кириллическая строка UTF-16, которая выглядит как Хотелось бы конвертнуть её в cp-1251, чтобы она была читаема. Сколько...

из UTF-8 в Windows-1251
Как строку в формате UTF-8 перекодировать в Windows-1251? Добавлено через 16 минут Существуют ли какие-нибудь функции?

Перекодировка с windows-1251 в utf-8
как можно написать процедуру на pl/sql, чтобы перекодировал с windows-1251 в utf-8 ?

Парсинг из windows-1251 в UTF-8
Здравствуйте! Существует модуль для DLE который парсит тв программу с tv.mail.ru. Кодировка моего сайта - UTF-8, а программа на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru