这个方法写出来的xml文件在ultraedit打开时是16进制显示的,不能再IE打开,请问怎么办诶

提问者:thomas 提问时间:2011年03月09日 人气:0
用户提问
WriteLine(FILE *pFile, const TCHAR *szOut, const TCHAR *szFmt)
{
TCHAR szTempBuf[4096];

memset(szTempBuf, 0x00, sizeof(szTempBuf));
wsprintf(szTempBuf, szOut, szFmt );
fwrite(szTempBuf, _tcslen(szTempBuf)*sizeof(TCHAR), 1, pFile);
}

WriteLine(fp, _T("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<oterm>\n") , _T(""));

因为程序是一个可以编译成ANSI和Unicode的程序,如果改定义的话,代价太大了,,有没有什么办法?
推荐答案
看到你这个问题时,我就想到是文件头引起的,试了一下果然

你的xml文档中编码选的是UTF-8, 这种编码的文件需要前3个字节分别为0xEF 0xBB 0xBF

后面才接着是你的正文内容,如果不这样就IE就认不出的,ultraedit也不会认为它是UTF-8文档

各种编码的文件头都不一样,比如Unicode就是0xFF 0xEF

ASCII码就没有前置头,直接就是正文

而且我看你写文件的方式以及你字符操作的方式,你的输出应该不是UTF-8编码的,

用这种宏输出,只有2种情况要么是Unicode,要么是ASCII码,所以你的正文

encoding=\"UTF-8\"这段 在你选择ASCII码时应该填encoding=\"ISO-8859-1\"

在你选择Unicode时应该填encoding=\"Unicode\"。

希望对你有帮助。