Русские буквы в исходящем текстовом файле

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Русские буквы в исходящем текстовом файле

Сообщение Adreal » 10.01.2011 21:29:53

Извините, если уже спрашивалось, просто уже достаточно долго ищу ответ, и не могу найти. Требуется вписывать в файл русские буквы. При данном примере программы в файле остаются только всякие значки. Дело в кодировке, но как исправить?


uses crt;
var
t:ansistring;
f:text;
i:integer;
begin
clrscr;
assign(f,'d:/1/1.txt');
rewrite(f);
writeln('ввод в текстовый файл');
readln(t);
writeln(f,t);

readln;
close(f);
end.

Adreal
незнакомец
 
Сообщения: 2
Зарегистрирован: 10.01.2011 21:21:43

Re: Русские буквы в исходящем текстовом файле

Сообщение Odyssey » 11.01.2011 01:55:27

Подозреваю что под Windows ввод происходит в кодировке CP866. Если использовать модули Lazarus, то можно попробовать добиться результата двумя способами (код на работоспособность я не проверял, это за вами):
1)
Код: Выделить всё
uses ..., FileUtil;
...
writeln(f, Utf8ToAnsi(ConsoleToUtf8(t)));
2)
Код: Выделить всё
uses ..., LConvEncoding,
...
writeln(f, Utf8toCp1251(Cp866ToUtf8(t)));

Ещё можно не менять программу, а просто открывать файл редактором, который понимает CP866, например AkelPad'ом.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Русские буквы в исходящем текстовом файле

Сообщение Adreal » 11.01.2011 21:00:42

Что-то у меня не получилось подшить те модули, которые вы указали...(

И видимо там другой код кодировки, предположительно ANSI... Потому что программа AkelPad тоже не видит русские буквы....
Adreal
незнакомец
 
Сообщения: 2
Зарегистрирован: 10.01.2011 21:21:43

Re: Русские буквы в исходящем текстовом файле

Сообщение VirtUX » 11.01.2011 21:30:16

FileUtil в консольном не так-то просто подключить
а вообще - эта тема стопятьсот раз уже обсуждалась. Поисковиком пользуйтесь.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Русские буквы в исходящем текстовом файле

Сообщение Odyssey » 11.01.2011 23:38:47

Adreal писал(а):Что-то у меня не получилось подшить те модули, которые вы указали...(

Не удивительно, они входят в состав Lazarus. Если он установлен, нужно либо прописать в настройках проекта пути к ним (это зависит от того, в чём вы редактируете и как компилируете код), либо складывать эти модули в папку своей программы. Плюс их придётся таскать с собой туда, где не установлен Lazarus. Так что это вообще не лучшее решение для учебных программ, которые используют только crt.

Adreal писал(а):И видимо там другой код кодировки, предположительно ANSI... Потому что программа AkelPad тоже не видит русские буквы....

Можете попробовать выложить проблемный файл сюда, на форум. Тогда кто-нибудь ещё сможет проверить в какой он кодировке.

P.S. И кстати,
Код: Выделить всё
writeln('ввод в текстовый файл');
все нормально отображает в консоли?
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Русские буквы в исходящем текстовом файле

Сообщение modestusmunh » 20.09.2011 19:38:02

Код: Выделить всё
uses
FileUtil;
...
WriteLn(UTF8ToConsole('ввод в текстовый файл');
...
modestusmunh
новенький
 
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00

Re: Русские буквы в исходящем текстовом файле

Сообщение Mr.Smart » 20.09.2011 19:47:43

modestusmunh FileUtil - часть LCL!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Русские буквы в исходящем текстовом файле

Сообщение modestusmunh » 20.09.2011 20:43:25

И как быть?
У Мансурова написано то, что я цитировал ранее. У меня не работает. Но мне и не очень-то и надо. Но всё же: как быть?
modestusmunh
новенький
 
Сообщения: 13
Зарегистрирован: 07.09.2011 16:51:00

Re: Русские буквы в исходящем текстовом файле

Сообщение Mr.Smart » 20.09.2011 21:01:27

Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Русские буквы в исходящем текстовом файле

Сообщение Ism » 21.09.2011 17:12:57

Чтоб корректно писать в разных кодировках, надо точно представлять,, в какой пишешь, и в какой читаешь.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru