Cum să setați codificarea pentru un fișier text

Cum să setați codificarea pentru un fișier text

Buna maestru! Trebuie să salvați fișierul text cu datele în codarea ANSI ca UTF-8. Eu folosesc acest cod:
AssignFile (F, "myfile.txt");






Rescrie (F);
WriteLn (F, "Exemplu");
CloseFile (F);
Am un fișier text în codare ANSI. Ce fac greșit?


> Am un fișier text în codare ANSI. Ce fac greșit?

Asta e tot.

Cum este necesar? Ajută-te.

Înțelegeți mai întâi sarcina. Pentru "cu date în codarea ANSI ca UTF-8" - acest lucru este nonsens.


> Trebuie să salvați fișierul text

Codul de mai sus nu face acest lucru, creează un fișier nou.
Pe baza acestui fapt, există o ipoteză privind formularea incorectă a întrebării.
de exemplu: trebuie să salvați datele într-un fișier text.

Trebuie să creați un fișier text și să salvați datele în codarea utf8

un bom nu este încă o stâncă.

> O bomba nu este încă o stâncă.
pentru textul monodisual în limba engleză.

Exemplul dat de exemplu, în formarea unui fișier de contact valid pentru telefoane mobile în format VCF, care este un motiv ANSI nu raspoznaetcya, deși creat în fișierul VCF standardul. Fișierul de contact inițial, care a fost trimis la pysyuk de pe telefonul mobil în codarea UTF8 (codarea este afișată când Notepad ++ este deschis)

dacă, de exemplu, capturați apoi răspunsul pentru un exemplu:






în codul dvs., datele din fișier sunt scrise nu în utf-8 și, prin urmare, în interiorul fișierului nu sunt date utf-8.

var
# xA0; t: TStringlist;

începe
t: = tstringlist.create;
încerca
# xA0; t.add ("utf8line");
# xA0; t.savetofile ("fișier.txt", TEncoding.UTF8);
în cele din urmă
# xA0; t.free;
se încheie;
se încheie;

var
# xA0; sl1; sl2: TStringList;
# xA0; i: Integer;
începe
# xA0; sl1: = TStringList.Create;
# xA0; sl2: = TStringList.Create;
# xA0; sl1.Add ("în datele de cod");
# xA0; sl1.Add ("fișierul nu este scris în utf-8");
# xA0; sl1.Add ("și, prin urmare, nu există date utf-8 în interiorul fișierului.");
# xA0; pentru i: = 0 până la sl1.Count - 1 până la
# xA0; sl2.Add (AnsiToUtf8 (sl1.Strings [i]));
# xA0; sl1.SaveToFile ("ANSI.txt");
# xA0; sl2.SaveToFile ("utf.txt");

> OW # xA0; În utf.txt vseravno ANSI: (
> megavoid # xA0; salvează la UTF, dar din BOM, dar trebuie să recunoașteți incorect mobilul

> Omelette am găsit-o, dar nu înțeleg cum să am câteva linii acolo?

Totul! Magazine în UTF-8 fără BOM! Am decis astfel:

procedura StringSave (const Numele fișierului: TFileName; const Data: UTF8String);
var
# xA0; FS: TFileStream;
începe
# xA0; FS: = TFileStream.Create (FileName, fmCreate);
# xA0; încercați
# xA0; # xA0; FS.Write (Pointer (Date) ^, Lungime (Date));
# xA0; în cele din urmă
# xA0; # xA0; FS.Free;
# xA0; sfârșitul;
se încheie;

var
t: TStringlist;
începe
t: = tstringlist.create;
încerca
t.add ("BEGIN: VCARD");
t.add ("VERSIUNE: 2,1");
t.add ("N; CHARSET = UTF-8; ENCODING = 8BIT: Unchiul Vasya");
t.add ("TEL; PREF; VOICE; ENCODING = 8BIT: 0957676345345");
t.add ("END: VCARD");
StringSave ("Unchiul Vasya.vcf", UTF8Encode (t.Text));
în cele din urmă
t.free;
se încheie;

Poate cineva să vină la îndemână;)


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

Am în UTF-8 fără magazine BOM

Memorie: 0,75 MB
Sincronizare: 0.031 sec







Trimiteți-le prietenilor: