Cum de a detecta codificare de fișiere?

Pe de fișiere (Windows 7) am niște fișiere text (Acestea sunt SQL script files, dacă asta contează).

Atunci când este deschis cu Notepad++]1, în "de Codificare" meniu unele dintre ele sunt raportate de a avea o codificare de "UCS-2 Little Endian" și "UTF-8 fără BOM".

Ceea ce este diferența? Toate acestea par să fie perfect valabil script-uri. Cum aș putea să spun ce codificări fișierul fără Notepad++?

Comentarii la întrebare (5)
Soluția

Fișierele indică în general lor de codare cu un fișier antet. Există multe exemple aici. Cu toate acestea, chiar și citirea header niciodata nu poti fi sigur ce codifică un fișier este într-adevăr, folosind.

De exemplu, un fișier cu primii trei octeți 0xEF,0xBB,0xBF este probabil un codificat UTF-8 fișiere. Cu toate acestea, ar putea fi un ISO-8859-1 dosar care se întâmplă să înceapă cu personajele. Sau ar putea fi un alt tip de fișier în întregime.

Notepad++ face tot posibilul pentru a ghici ce codarea unui fișier se folosește, și de cele mai multe ori are dreptate. Uneori chiar este greșit, deși - ca's de ce 'Codare' meniul este acolo, astfel încât să puteți suprascrie cele mai bune ghici.

Pentru cele două codificări ai spus:

  • "UCS-2 Little Endian" fișierele sunt UTF-16 files (bazat pe ceea ce am înțeles de la info aici), astfel încât, probabil, ** începe cu 0xFF,0xFE ca primii 2 bytes. Din ceea ce pot spune, Notepad++ le-a descris ca "UCS-2" de't suport anumite fațete ale UTF-16.
  • "UTF-8 fără BOM" fișiere don't au orice antet bytes. Ca's ce "fără BOM" bit înseamnă.
Comentarii (10)

Nu poți. Dacă ai putea face asta, nu ar fi atât de multe site-uri web sau fișiere text cu "random păsărească" acolo. Ca's de ce codificarea este, de obicei trimis împreună cu încărcătura ca meta-date.

În cazul în care acesta's nu, tot ce pot face este un "smart ghici", dar rezultatul este adesea ambiguă deoarece aceeași secvență de octeți ar putea fi valabilă în mai multe codificări.

Comentarii (4)