Як задати кодування текстового файлу

Як задати кодування текстового файлу

Привіт майстра! Потрібно зберегти текстовий файл з даними в кодуванні ANSI as UTF-8. Юзаю такий код:
AssignFile (F, "myfile.txt");
Rewrite (F);
WriteLn (F, "Example");
CloseFile (F);
отримую текстовий файл в кодуванні ANSI. Що роблю не так?


> Отримую текстовий файл в кодуванні ANSI. Що роблю не так?

Усе.

Як треба? Допоможіть будь ласка.

Спочатку зрозумій завдання. Бо "з даними в кодуванні ANSI as UTF-8" - це маячня.


> Потрібно зберегти текстовий файл

вище наведений код цього не робить, він створює новий файл.
виходячи з цього, є припущення, про невірну формулюванні питання.
наприклад: потрібно зберегти дані в текстовий файл.

Треба створити текст.файл і зберегти дані в кодуванні utf8

один бом ще не утефе.

> Один бом ще не утефе.
для англійського тексту монопісуально.

Example вказано для прикладу, в дествительно формується файл контакту для мобіли в форматі VCF, який в кодуванні ANSI чомусь не распознаетcя, хоча створений за стандартом файлу VCF. Оригінальний файл контакту, який переслав на пісюк з мобіли в кодуванні UTF8 (кодування відображає при відкритті Notepad ++)

якщо для прикладу, то лови відповідь для прикладу:
в твоєму коді дані в файл пишуться не в УТФ-8 і тому всередині файлу не УТФ-8 дані.

var
# XA0; t: TStringlist;

begin
t: = tstringlist.create;
try
# XA0; t.add ( "utf8line");
# XA0; t.savetofile ( "file.txt", TEncoding.UTF8);
finally
# XA0; t.free;
end;
end;

var
# XA0; sl1, sl2: TStringList;
# XA0; i: Integer;
begin
# XA0; sl1: = TStringList.Create;
# XA0; sl2: = TStringList.Create;
# XA0; sl1.Add ( "в твоєму коді дані");
# XA0; sl1.Add ( "в файл пишуться не в УТФ-8");
# XA0; sl1.Add ( "і тому всередині файлу не УТФ-8 дані.");
# XA0; for i: = 0 to sl1.Count - 1 do
# XA0; sl2.Add (AnsiToUtf8 (sl1.Strings [i]));
# XA0; sl1.SaveToFile ( "ANSI.txt");
# XA0; sl2.SaveToFile ( "утф.txt");

> OW # XA0; В утф.txt всерівно ANSI :(
> megavoid # XA0; Зберігає в UTF але з BOM, а потрібно без інакше невірно розпізнає мобіла

> Омлет Я теж це знайшов, тільки не зрозумію як туди кілька рядків запхати?

Усе! Зберігає в UTF-8 без BOM! Вирішив ось так:

procedure StringSave (const Filename: TFileName; const Data: UTF8String);
var
# XA0; FS: TFileStream;
begin
# XA0; FS: = TFileStream.Create (FileName, fmCreate);
# XA0; try
# XA0; # XA0; FS.Write (Pointer (Data) ^, Length (Data));
# XA0; finally
# XA0; # XA0; FS.Free;
# XA0; end;
end;

var
t: TStringlist;
begin
t: = tstringlist.create;
try
t.add ( "BEGIN: VCARD");
t.add ( "VERSION: 2.1");
t.add ( "N; CHARSET = UTF-8; ENCODING = 8BIT: дядько Вася");
t.add ( "TEL; PREF; VOICE; ENCODING = 8BIT: 0957676345345");
t.add ( "END: VCARD");
StringSave ( "дядько Вася.vcf", UTF8Encode (t.Text));
finally
t.free;
end;

Можт кому стане в нагоді;)


> Мішаня7-8 # XA0; (05.12.11 13:26) [14]
>
>> OW # XA0; В утф.txt всерівно ANSI :(

у мене в UTF-8 без BOM зберігає

Пам'ять: 0.75 MB
Час: 0.031 c