No es un problema fácil de resolver, y generalmente se basa en métodos heurísticos para tomar una mejor respuesta a lo que la codificación de entrada es, que puede ser disparado por los insumos relativamente inocuos - por ejemplo, echar un vistazo a this Wikipedia article y The Notepad file encoding Redux para más detalles.
Si está buscando una solución solo para Windows con dependencias mínimas, puede usar una combinación de IsTextUnicode y MLang's DetectInputCodePage para intentar la detección de conjuntos de caracteres.
Si está buscando la portabilidad, pero no le importa asumir una dependencia bastante grande en forma de UCI, puede hacer uso de sus rutinas character set detection para lograr lo mismo de forma portátil.
¿Esto solo es ANSI vs UCS2? –
¿Cuáles son las posibles codificaciones que esperas? ¿Hay una pequeña colección de posibles, o podría ser cualquiera? –
¿Qué entorno estás usando? Creo que hay una biblioteca para hacer esto en Linux que es portátil para Windows. –