怎么判断XML 的编码格式(UTF-8或GB2312等)

lys07962000 2016-03-21 04:19:31
MSXML2::IXMLDOMDocument2Ptr pXMLDoc;
bSuccess = pXMLDoc->loadXML((_bstr_t)csBody);


struct IXMLDOMDocumentType docType;
pXMLDoc->get_doctype()是这样获取吗
...全文
2288 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-03-22
  • 打赏
  • 举报
回复
仅供参考:
#define _UNICODE 1
#pragma warning(disable:4305 4309)
#pragma comment(lib,"ole32")
#pragma comment(lib,"comsupp")
#include <cstdio>
#include <objbase.h>
#include <comip.h>
#include <mlang.h>
#include <tchar.h>

typedef _com_ptr_t<_com_IIID<IMultiLanguage3, &IID_IMultiLanguage3> > IMultiLanguage3Ptr;

int main() {
    CoInitialize(NULL);
    {
        IMultiLanguage3Ptr pML(CLSID_CMultiLanguage, NULL, CLSCTX_INPROC);
        char data[] = { 0xD6, 0xD0, 0xCE, 0xC4, 0xB1, 0xE0, 0xC2, 0xEB };
        int isize = sizeof(data);
        DetectEncodingInfo result[32];
        int result_count = sizeof(result) / sizeof(result[0]);
        HRESULT hr = pML->DetectInputCodepage(MLDETECTCP_NONE, 0, data, &isize, result, &result_count);
        if (!SUCCEEDED(hr))
        {
            fprintf(stderr, "Failed with 0x%x\n", hr);
            CoUninitialize();
            return hr;
        }
        for (int i = 0; i < result_count; i++)
        {
            WCHAR desc[100] = {0};
            pML->GetCodePageDescription(result[i].nCodePage, result[i].nLangID, desc, 100);
            printf("CP:%d (%S)\n", result[i].nCodePage, desc);
        }
    }
    CoUninitialize();
    return 0;
}
//CP:936 (Chinese Simplified (GB2312))
//

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧