C/C++怎么获取一个文件的编码方式

C/C++如何获取一个文件的编码方式?
由于之前的xml文件未考虑编码问题,在xml生成时没有编码方式,导致xml文件
从windows server 2003上搬到linux上出问题

windows server 2003我看了一下,编码方式是:gb2312
linux编码方式是:utf-8

我的程序需要读取xml

如果手动转换:
[root@localhost bin]$iconv -f GB2312 -t UTF-8 11.txt -o 11.txt.bak
[root@localhost bin]$mv 11.txt.bak 11.txt

如果用程序转换怎么转换呢?程序每次都执行上述命令
如果文件已经是utf-8,再启动程序的时候便会出错。

所以我想,如果获取到了文件的编码方式再通过iconv命令转换就不会出问题了

问题是:用C/C++怎么才能获取到一个文件的编码方式?



------解决方案--------------------
搞错了:
utf-8: 头2个字节为0xEFBB;
unicode: FF FE 或者 FE FF
------解决方案--------------------
1, 修改xml文件,加入charset 或者
2,xml parser中指定编码字符集
------解决方案--------------------
我的博文(http://blog.****.net/turingo/article/details/8136644)有详细的方案。