工程设置:VC6.0 + MFC.exe + _MBCS 需求:分析服务器返回的UTF-8 xml字符串,然后将直接保存为或着加入现有的UTF-8 xml文件中。描述:(文件fileName为UTF-8格式的xml文件)
CMarkup xml;
xml.Load("D:\\fileName.xml");//1
xml.AddSubDoc("UTF-8字符串");//2
xml.SetAttrib("id",CString("字符串"));//3
xml.GetAttrib("id");//4
xml.Save("fileName");//5.问题(xml文件可能不含编码描述):
1.xml对象保存在内存中的内容是UTF-8 还是已经转换为ANSI了??
2.所加入的字符串有没有转换为其它编码?
3.CString("字符串")是否为ANSI编码,其存于xml中的编码是否转换为UTF-8?
4.返回的CString是ANSI编码还是UTF-8编码?
5.其保存的编码格式是UTF-8还是ANSI?不知道描述清楚了没有
在此先谢谢各位啦!

解决方案 »

  1.   

    记住一个原则:以后尽量避免使用 ANSI 编码,它的局限太多了。UTF-8编码因为体积小,适合存储和网络传输环节,但在字符串运算、显示等环节是很不方便的,通常软件会在读取UTF-8字符串后直接转换成UNICODE再执行各种运算(本来转成ANSI也可以,但应避免),再转换回UTF-8后保存。
    掌握了这个原理就知道如何处理了,不管用哪个XML解析库,涉及到DOM操作的类方法都直接使用UNICODE字符串(因为要运算),保存时通常可以配置期望的编码格式,解析库会自动转换。
      

  2.   

    有道理。顺便问一下,定义_MBCS后,CString(_T("字符串"))存储的字符串编码是什么呢? 
      

  3.   

    ANSI编码
    用UNICODE宏,就是Unicode编码
      

  4.   

    CMarkup类里面有个函数UTF8ToA另外 同意楼上几位的说法