关于HTTP访问XML文件的随笔

最近项目中要用到一些web xml数据的访问分析,采用msxml

 

1.msxml是微软提供的,在非开发环境中,需要注册

 

2.xml文件,一般在第一句有编码方式,一般默认是utf-8,属于一种unicode

 

3.从网络采集的xml数据,需要使用winnet函数库

 

4.winnet采集自网络的数据,默认的都是CP_ACP格式的,简单说就是ANSI或UNICODE,UTF8的编码方式是CP_UTF8,这么看xml数据,字符是正常的,但是汉字都是乱码

 

5.解决utf-8乱码方法:

UNICODE -> ANSI : CT2A or MultiByteToWideChar

ANSI -> UTF8: WideCharToMultiByte

 

    wstring AStringToWString(const string& szSrc, UINT nCodePage)

    {

        wstring lstrResult;

        if (!szSrc.empty())

        {

            int length = MultiByteToWideChar(nCodePage, 0, szSrc.c_str(), -1, NULL, 0);

            wchar_t* lpwszTemp = new wchar_t[length + 1];

            memset(lpwszTemp, 0, (length + 1) * sizeof(wchar_t));

            MultiByteToWideChar(nCodePage, 0, szSrc.c_str(), -1, lpwszTemp, length);

            lstrResult = lpwszTemp;

            delete[] lpwszTemp;

        }

        return lstrResult;

    }

 

    string WStringToAString(const wstring& szSrc, UINT nCodePage)

    {

        string lstrResult;

        if (!szSrc.empty())

        {

            int length = WideCharToMultiByte(nCodePage, 0, szSrc.c_str(), -1, NULL, 0, NULL, NULL);

            char* lpszTemp = new char[length + 1];

            memset(lpszTemp, 0, length + 1);

            WideCharToMultiByte(nCodePage, 0, szSrc.c_str(), -1, lpszTemp, length, NULL, NULL);

            lstrResult = lpszTemp;

            delete[] lpszTemp;

        }

        return lstrResult;

    }

 

6.保存xml文本,保存UTF8编码,需要在创建文件的时候,指定文件的编码方式,否则还是乱码……

文件也就不能用fopen了,打开文件用_wfopen_s

比如:_wfopen_s(&f1,L "1.xml ",L "rt+,ccs=UTF-8 ");      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值