怎么在不知道字符串编码格式的情况下把字符串转换成unicode

如何在不知道字符串编码格式的情况下把字符串转换成unicode?
我做了个控件,里面有个函数,读取指定文件中的文本函数声明为:ReadFile(BSTR   fileName,   BSTR*   pBuffer)。

BSTR里面要求是unicode   但是我不知道文件的编码是什么格式,可能是unicode,也可能是UTF-8或者GB2312。我怎么做才能正确识别这些文件,返回正确的内容呢?



------解决方案--------------------
如果编码仅仅存在UTF-8或者GB2312或者UNICODE这三种可能的话,是可以判断的。
UTF-8编码的文件头前3个字节为0xEF 0xBB 0xBF。
UNICODE文件头前两个字节为0xFF 0xFE或者UNICODE_BIG_ENDIAN的时候为0xFE 0xFF。
ANSI或者GB2312无文件头。