Русские буквы в исходящем текстовом файле
Модератор: Модераторы
Русские буквы в исходящем текстовом файле
Извините, если уже спрашивалось, просто уже достаточно долго ищу ответ, и не могу найти. Требуется вписывать в файл русские буквы. При данном примере программы в файле остаются только всякие значки. Дело в кодировке, но как исправить?
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.
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.
Подозреваю что под Windows ввод происходит в кодировке CP866. Если использовать модули Lazarus, то можно попробовать добиться результата двумя способами (код на работоспособность я не проверял, это за вами):
1)2)
Ещё можно не менять программу, а просто открывать файл редактором, который понимает CP866, например AkelPad'ом.
1)
Код: Выделить всё
uses ..., FileUtil;
...
writeln(f, Utf8ToAnsi(ConsoleToUtf8(t)));Код: Выделить всё
uses ..., LConvEncoding,
...
writeln(f, Utf8toCp1251(Cp866ToUtf8(t)));Ещё можно не менять программу, а просто открывать файл редактором, который понимает CP866, например AkelPad'ом.
Что-то у меня не получилось подшить те модули, которые вы указали...(
И видимо там другой код кодировки, предположительно ANSI... Потому что программа AkelPad тоже не видит русские буквы....
И видимо там другой код кодировки, предположительно ANSI... Потому что программа AkelPad тоже не видит русские буквы....
FileUtil в консольном не так-то просто подключить
а вообще - эта тема стопятьсот раз уже обсуждалась. Поисковиком пользуйтесь.
а вообще - эта тема стопятьсот раз уже обсуждалась. Поисковиком пользуйтесь.
Adreal писал(а):Что-то у меня не получилось подшить те модули, которые вы указали...(
Не удивительно, они входят в состав Lazarus. Если он установлен, нужно либо прописать в настройках проекта пути к ним (это зависит от того, в чём вы редактируете и как компилируете код), либо складывать эти модули в папку своей программы. Плюс их придётся таскать с собой туда, где не установлен Lazarus. Так что это вообще не лучшее решение для учебных программ, которые используют только crt.
Adreal писал(а):И видимо там другой код кодировки, предположительно ANSI... Потому что программа AkelPad тоже не видит русские буквы....
Можете попробовать выложить проблемный файл сюда, на форум. Тогда кто-нибудь ещё сможет проверить в какой он кодировке.
P.S. И кстати,
Код: Выделить всё
writeln('ввод в текстовый файл'); -
modestusmunh
- новенький
- Сообщения: 13
- Зарегистрирован: 07.09.2011 16:51:00
Код: Выделить всё
uses
FileUtil;
...
WriteLn(UTF8ToConsole('ввод в текстовый файл');
...modestusmunh FileUtil - часть LCL!
-
modestusmunh
- новенький
- Сообщения: 13
- Зарегистрирован: 07.09.2011 16:51:00
И как быть?
У Мансурова написано то, что я цитировал ранее. У меня не работает. Но мне и не очень-то и надо. Но всё же: как быть?
У Мансурова написано то, что я цитировал ранее. У меня не работает. Но мне и не очень-то и надо. Но всё же: как быть?
Чтоб корректно писать в разных кодировках, надо точно представлять,, в какой пишешь, и в какой читаешь.
