环境:日文win2000
从一个含有中文的xml中解析数据(数据类型是BSTR),将BSTR转化成CString后CString变量中的字节码被改编,从而显示不出中文。
比如:XML中有一个数据(中文数据):“我是王伟”,通过xml解析,BSTR变量的值为“我是王伟”,但是将BSTR转化成CString后,变成"我?是?伟"。
请问如何解决这个问题,是中文完好表示。

解决方案 »

  1.   

    你编译的时候加
    _UNICODE
    了吗
      

  2.   

    use wild characters directly.
      

  3.   

    在转换的时候一般开缓冲区的时候一定么注意,开的缓冲区大小一定是2的整数倍,这一点对于UNICODE下编程很重要,在BSTR中字符的终结符是00,所以可以用一个简单的办法解决你所遇到的问题,我开始也遇到,就是每次转换后末尾的字符总是不正确,长度也不对,在开缓冲的时候,应该比实际的大2个字节,一定要Zeromemory ,至于转换我很少用函数,CString 类自己足够用了,  BSTR TO CString   : BSTR bsStr; ->  CString strAnsi(bsStr);搞定
    CString TO BSTR : bsStr= str.AlloclSysSting();没有问题的。
      

  4.   

    BSTR的终结符号不是00。
    BSTR是前置字串长度的str,如果以00为终结符号,遇到字串中间存在\0的str,肯定出错。当然一般情况下不会有错,因为通常都不会在字串中间写\0。