我在MFC exe创建的工程中用以下代码段成功显示了文件内容(cf文件实际上是文本),但是放到ATL com wizzard中就显示的乱码:代码段如下:
//read the Rule file into buff
CFile file(_T("e:\\Chinese_rules.cf"),CFile::modeRead);
DWORD len=file.GetLength();
TCHAR* str=new TCHAR[len];
file.Read(str,len);
CString buff(str);   //这里我用CString对象是方便后面代码的查找并提取字符串功能
AfxMessageBox(buff);
我后来发现了问题,在MFC exe创建的工程中,定义了宏_MBCS;而用ATL com wizzard创建的工程中定义了宏_UNICODE,所以就显示乱码了。但是宏定义在这里又不能改变,否则其他很多地方会有影响。而且我用mbtowc转换也还是不行。
这是否和文件编码有关系?是不是读取的文件字符都是CHAR类型的?请问有什么办法可以解决吗?