1

当我使用 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,但输出是垃圾/错误。

4

0 回答 0