Sul mio filesystem (Windows 7) ho alcuni file di testo (questi sono file di script SQL, se questo conta).
Quando vengono aperti con Notepad++, nel menu "Encoding" alcuni di essi vengono segnalati con una codifica di "UCS-2 Little Endian" e alcuni di "UTF-8 senza BOM".
Qual è la differenza qui? Sembrano tutti script perfettamente validi. Come potrei dire quali codifiche hanno i file senza Notepad++?
I file generalmente indicano la loro codifica con un'intestazione. Ci sono molti esempi qui. Tuttavia, anche leggendo l'intestazione non si può mai essere sicuri di quale codifica un file stia realmente usando.
Per esempio, un file con i primi tre byte 0xEF,0xBB,0xBF
è probabilmente un file codificato UTF-8. Tuttavia, potrebbe essere un file ISO-8859-1 che inizia con i caratteri 
. O potrebbe essere un tipo di file completamente diverso.
Notepad++ fa del suo meglio per indovinare quale codifica sta usando un file, e la maggior parte delle volte ci riesce. A volte si sbaglia però - ecco perché il menu 'Encoding'è lì, così puoi sovrascrivere la sua migliore ipotesi.
Per le due codifiche che hai menzionato:
0xFF,0xFE
come primi 2 byte. Da quello che posso dire, Notepad++ li descrive come "UCS-2" poiché non supporta certi aspetti di UTF-16.Non si può. Se si potesse fare, non ci sarebbero così tanti siti web o file di testo con "gibberish casuale" là fuori. Questo è il motivo per cui la codifica viene solitamente inviata insieme al carico utile come meta dati.
Nel caso in cui non lo sia, tutto quello che si può fare è una "supposizione intelligente", ma il risultato è spesso ambiguo poiché la stessa sequenza di byte potrebbe essere valida in diverse codifiche.