Hogyan határozza meg a kódolás a szöveges fájl

Hogyan határozza meg a kódolás a szöveges fájl

Szia Mester! szövegfájlt szeretne menteni az adatokat kódolva ANSI UTF-8. Yuzayu az alábbi kódot:
AssignFile (F, "myfile.txt");
Átírása (F);
WriteLn (F, "példa");
CloseFile (F);
Kapok egy szöveges fájlt kódolt ANSI. Mit csinálok rosszul?


> Egy szövegfájlt kódolt ANSI. Mit csinálok rosszul?

Mindent.

Hogyan akarsz? Segíts kérlek.

Kérjük, próbálja megérteni a problémát. A „kódolt adatok ANSI UTF-8” - ez képtelenség.


> Meg kell menteni a szövegfájlt

A fenti kód nem ezt, akkor létrehoz egy új fájlt.
ezen az alapon, akkor a spekuláció a helytelen kérdés megfogalmazása.
például: a menteni kívánt adatokat egy szöveges fájlt.

Tekst.fayl létre kell hozni, és mentse az adatokat a kódolás utf8

bong nem utefe.

> A bong nem utefe.
angol szöveg monopisualno.

Példa adott például képező kapcsolati fájl érvényes mobiltelefonok vcf formátumban, amely ANSI oka nem raspoznaetcya, bár létre a szabványos VCF fájlt. Az eredeti kapcsolatot küldött fájl a mobiltelefonok pisyuk kódolt UTF8 (amely akkor jelenik meg, amikor megnyitja a Notepad ++)

ha például, akkor elkapni a választ egy példa:
a kódban, az adatokat a fájl nem írt UTF-8, és ezért UTP-8 adatok egy fájlba.

var
# XA0; t: TStringlist;

kezdődik
t: = tstringlist.create;
megpróbál
# XA0; t.add ( "utf8line");
# XA0; t.savetofile ( "fájl.txt", TEncoding.UTF8);
végül
# XA0; t.free;
végén;
végén;

var
# XA0; SL1, SL2: TStringList;
# XA0; i: integer;
kezdődik
# XA0; SL1: = TStringList.Create;
# XA0; SL2: = TStringList.Create;
# XA0; sl1.Add ( "adat a kódban");
# XA0; sl1.Add ( "a fájl nem írt UTF-8");
# XA0; sl1.Add ( "és ezért nem UTF-8 adatok a fájlban.");
# XA0; i: = 0 sl1.Count - 1 do
# XA0; sl2.Add (AnsiToUtf8 (sl1.Strings [i]));
# XA0; sl1.SaveToFile ( "ANSI.txt");
# XA0; sl2.SaveToFile ( "utf.txt");

> OW # XA0; a utf.txt vseravno ANSI :(
> megavoid # XA0; tartja UTF hanem a BOM, anélkül, hogy egyébként helytelenül ismert MOBILE

> Omlett Azt is megállapították, csak nem értem, hogy dugjon egy pár sort?

Mindent! Menti az UTF-8 BOM nélkül! Elhatároztam, mint ez:

eljárás StringSave (const Fájlnév: TFileName; const adatok: UTF8String);
var
# XA0; FS: TFileStream;
kezdődik
# XA0; FS: = TFileStream.Create (fájlnév, fmCreate);
# XA0, próbálja
# XA0; # XA0; FS.Write (Pointer (Data) ^, hossza (Data));
# XA0, végül
# XA0; # XA0; FS.Free;
# XA0; end;
végén;

var
t: TStringlist;
kezdődik
t: = tstringlist.create;
megpróbál
t.add ( "BEGIN: VCARD");
t.add ( "változat: 2,1");
t.add ( "N; charset = UTF-8; encoding = 8 bites: Bob nagybátyja");
t.add ( "TEL; PREF; VOICE; encoding = 8 bites: 0957676345345");
t.add ( "END: VCARD");
StringSave ( "Vasya.vcf nagybátyja", UTF8Encode (t.Text));
végül
t.free;
végén;

Mozht hasznos;)


> Mishanya7-8 # XA0; (05.12.11 13:26) [14]
>
>> OW # XA0; a utf.txt vseravno ANSI :(

Van egy UTF-8 BOM nélkül ment

Memória: 0,75 MB
Idő: 0.031 c