En mi sistema de archivos (Windows 7) tengo algunos archivos de texto (Son archivos de script SQL, si eso importa).
Cuando se abre con Notepad++, en el menú "Codificación" algunos de ellos se informa de que tienen una codificación de "UCS-2 Little Endian" y algunos de "UTF-8 sin BOM".
¿Cuál es la diferencia? Todas parecen ser escrituras perfectamente válidas. ¿Cómo podría saber qué codificaciones tiene el archivo sin Notepad++?
Los archivos suelen indicar su codificación con una cabecera de archivo. Hay muchos ejemplos aquí. Sin embargo, incluso leyendo la cabecera nunca se puede estar seguro de qué codificación está utilizando realmente un archivo.
Por ejemplo, un archivo con los tres primeros bytes 0xEF,0xBB,0xBF
es probablemente un archivo codificado en UTF-8. Sin embargo, podría ser un archivo ISO-8859-1 que casualmente comienza con los caracteres 
. O puede ser un tipo de archivo totalmente diferente.
Notepad++ hace todo lo posible por adivinar qué codificación utiliza un archivo, y la mayoría de las veces acierta. Sin embargo, a veces se equivoca - por eso está el menú "Codificación", para que pueda anular su mejor suposición.
Para las dos codificaciones que mencionas:
0xFF,0xFE
como los primeros 2 bytes. Por lo que sé, Notepad++ los describe como "UCS-2" ya que no soporta ciertas facetas de UTF-16.No se puede. Si pudiera hacerlo, no habría tantos sitios web o archivos de texto con "galimatías aleatorio" por ahí. Por eso la codificación suele enviarse junto con la carga útil como metadatos.
Si no es así, lo único que se puede hacer es una "suposición inteligente", pero el resultado suele ser ambiguo, ya que la misma secuencia de bytes puede ser válida en varias codificaciones.