32位系统下编程正常,64位系统下从数据库中读取的中文成为乱码?
oracle数据库。

解决方案 »

  1.   

    如果你的工程是多字节,就改成UNICODE字符集试试
      

  2.   

    我用的是VS2005,MFC!客户要求有很多win7x64,XPx64,已经是UNICODE字符集了!但是读取的时候还是有问题!32位下测试就没问题?
      

  3.   

    可能是我描述的不够清楚!
    具体情况如下:
        首先,我编的程序是C#的程序。
        其次,里面调用了MFC的dll,[DllImport("xxx.dll")]
        再次,Oracle采用的是Network的形式,在服务器上采用的是Oracle8.71 32位的数据库,在程序运行的机器上需要安装Oracle的Client,32位的系统下安装的是Oracle8.71的client。在XP64位系统上安装的是Oracle10g的Client。
        再次,C#和MFC调用数据是独立调用的,问题是32位一切正常,64位下C#下数据正常,MFC读取的中文数据为乱码。英文和数字正常。MFC中调取数据的函数为:
    _variant_t vdata = m_ptr ->GetCollect(str);
    CString dataStr = (char *)(_bstr_t)vdata;