Auf meinem Dateisystem (Windows 7) habe ich einige Textdateien (es handelt sich um SQL-Skriptdateien, falls das eine Rolle spielt).
Wenn ich sie mit Notepad++ öffne, wird im Menü "Kodierung" für einige von ihnen die Kodierung "UCS-2 Little Endian" und für einige "UTF-8 ohne BOM" angezeigt.
Worin besteht hier der Unterschied? Es scheint sich um völlig gültige Skripte zu handeln. Wie kann ich ohne Notepad++ feststellen, welche Kodierungen die Datei hat?
Dateien geben ihre Kodierung in der Regel in einem Dateikopf an. Es gibt viele Beispiele hier. Aber selbst beim Lesen des Headers kann man nie sicher sein, welche Kodierung eine Datei wirklich verwendet.
Zum Beispiel ist eine Datei mit den ersten drei Bytes 0xEF,0xBB,0xBF
wahrscheinlich eine UTF-8 kodierte Datei. Es könnte sich aber auch um eine ISO-8859-1-Datei handeln, die zufällig mit den Zeichen 
beginnt. Oder es könnte sich um einen völlig anderen Dateityp handeln.
Notepad++ tut sein Bestes, um zu erraten, welche Kodierung eine Datei verwendet, und die meiste Zeit liegt es richtig. Manchmal liegt es aber auch falsch - deshalb gibt es das Menü 'Kodierung', mit dem Sie die beste Schätzung außer Kraft setzen können.
Für die beiden Kodierungen, die Sie erwähnen:
0xFF,0xFE
als den ersten 2 Bytes. Soweit ich weiß, beschreibt Notepad++ sie als "UCS-2", da es bestimmte Facetten von UTF-16 nicht unterstützt.Das können Sie nicht. Wenn man das könnte, gäbe es nicht so viele Websites oder Textdateien mit "zufälligem Kauderwelsch". Deshalb wird die Kodierung normalerweise zusammen mit der Nutzlast als Metadaten übermittelt.
Falls dies nicht der Fall ist, kann man nur raten, aber das Ergebnis ist oft nicht eindeutig, da dieselbe Bytefolge in mehreren Kodierungen gültig sein kann.