Unicode工程
代码如下:
TCHAR ss[256];
CString szIniPath = GetCruuentPath();
szIniPath += _T("cfg.ini");
GetPrivateProfileString(_T("Dise"),_T("IniURLFileName4"),_T("blank:about"),ss,sizeof(ss),szIniPath);
AfxMessageBox(ss);
ini文件中读取的内容为: English\中文.htm
中文系统下运行结果正常
英文系统下,中文成了乱码
请大家看看,这里用法有什么问题没有?

解决方案 »

  1.   

    你程序是不是用的unicode啊
    话你的英文windows设置了语言区域为中文吗?还有开头要调setlocale
    几个办法都试试看
      

  2.   

    这是在转换一个非Unicode工程到Unicode工程时遇到的问题
    工程中用到很多中文内容,比如sqlite数据库中的数据存在中文
    硬盘文件也存在中文路径和中文文件名
    在没有修改系统语言,即系统语言为英文的情况下,这些中文都正常处理
    现在就剩下读取ini文件的问题,这里读取出来的是一个文件路径
    其它API函数在处理中文字符的时候,都是正常的
    就GetPrivateProfileString函数返回的字符存在乱码
    难道GetPrivateProfileString使用有什么特殊要求?
    就当前工程而言,我可以把这些内容放进数据库里
    我发这个贴子,是想讨论一下GetPrivateProfileString函数的问题
    为什么Unicode下,中文处理仍然存在问题
      

  3.   

    刚刚测试了一下
    在我用的英文系统中
    AfxMessageBox(_T("中文");
    MessageBox的弹出内容是正常的
    下班先
    回家后再上来
      

  4.   

    我猜到什么原因了,你的ini文件是用ANSI保存的,你换成Unicode方式保存就可以了!
      

  5.   

    果然是ini文件编码引起的,转存为Unicode就行了
    谢谢各位