当我使用 FF FE 打印 UTF-16 LE 文件时,我打印的 XML 文件返回错误数据。我还使用了 setlocale 和 wchar。有人可以解释一下这是什么原因吗?
#define XML_UNICODE "\xFF\xFE"
#define XML_HEADER "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"yes\"?>"
以下是我的代码片段:
int liIndex=0;
int liSize=0;
char* sTxt=NULL;
wchar_t swTxt[LEN_XML_CONTENT];
wchar_t swUnicode[MAX_BUFF];
const char* cTxt;
const char* cUnicode;
cUnicode=XML_UNICODE;
mbstowcs(swUnicode, cUnicode, MAX_BUFF);
fwprintf(file, L"%ls", swUnicode);
cTxt=XML_HEADER;
liSize=strlen(cTxt);
mbstowcs(swTxt, cTxt, MAX_BUFF);
for(liIndex=0; liIndex<liSize; liIndex++)
{
fwprintf(file, L"%lc", swTxt[liIndex]);
}
fwprintf(file, L"\n");
使用notepad++检查时XML文件的输出,编码已经是UCS-2 LE,但输出是垃圾/错误。