从codeproject上下载了BasicExcel类,将数据写到Excel文件中,很方便,可是中文在Excel中显示为乱码,很是郁闷。
有高人说需要将GB2312汉字转化成为Unicode再写入Excel中。
问题如下:
1、在MFC程序中,CString str = "中国";,这个str是什么字符集的,是GB2312吗?
2、在MFC程序中的字符串都有哪些字符集格式?UTF-8,GB2312.。。都有吗,怎么判断是什么格式?
3、怎么讲GB2312格式的汉字字符串转化成Unicode呢?
4、有人用过将数据从MFC的CString变量导出到Excel中吗?多谢多谢!

解决方案 »

  1.   

    MFC中,简体中文版只有两种内码:ANSI(多字节GBK)和UNICODE(双字节)
    CString str = "中国";这种格式是GBK码
    正常情况下,excel对于上述两种编码以及UTF-8都是完全(自动)支持的
    也许你使用的BasicExcel类对于字符集编码进行了处理你可以试试:
    1、将编码转换为UNICODE(MultiByteToWideChar)
    或者2、进一步将编码转换为UTF-8
      

  2.   

    设置工程属性,创建UNICODE版工程试试。
    在工程菜单下的设置菜单项时,修改C/C++选项卡里的预处理程序定义,去掉_MBCS或MBCS,再加上UNICODE(用于WINAPI),_UNICODE(用于CRT)。
    如果仍然不行,则需要进一步解码UTF-8。
      

  3.   

    excel好像默认utf8,ms好多程序都默认utf8,因为utf8平台无关。没有字节序的困扰。
      

  4.   


    问题解决了,多谢各位!核心代码如下,收藏
    void GB2312ToUnicode(CString str_,WCHAR*& pWStr_)//得到Unicode字符串
    {
    int count = str_.GetLength()*2+1;
    if(pWStr_ == NULL) 
    {
    pWStr_ = new WCHAR[count];
    }
    DWORD UnicodeSize=MultiByteToWideChar(CP_ACP,0,(LPCSTR)str_.GetBuffer(),count,pWStr_,(DWORD)count);  
    }