英文操作系统中,MFC读取ini文件字符串,中文乱码!!?求助求助!

** 环境**:英文操作系统,win7-x64, vs2012,;

** 程序**:多字节的MFC,32位;

文件:要读取的ini文件是Ansi编译环境的;

** 想实现的目标**:GetPrivateProfileString读取ini文件中的中文字符串;
具体代码如下
GetPrivateProfileString( "SystemConfig", "CurProductFile", "", str.GetBuffer( 256 ), 256, path );

要读取的INI文件中的内容
[SystemConfig]
CurProductFile=G:\我的文档\MyProject\Debug\ProductFiles\PCB1.dat

结果问题!!:实际读取到的字符串结果str中,中文是乱码的!
乱码内容如下

str = "G:\ÎÒµÄÎĵµ\MyProject\Debug\ProductFiles\PCB1.dat"

中文都乱码了!崩溃了!

提示:我尝试将str从Ansi转Unicode,vs中显示中文正确!!!why?

CStringW strW;
…… str 到 strW 的转化操作……
strW = L"G:\我的文档\MyProject\Debug\ProductFiles\PCB1.dat"

环境语言设置:已经将控制面板中的语言设置成中文支持的格式:如下图

图片说明
图片说明
图片说明

提问:如何才能在英文操作系统中,多字节MFC程序中读取ini文件字符串,中文不乱码?或如何才能获取正常的多字节中文字符串?!

库存没有金币,欲哭无泪啊,虚心求教!!恳请高手指教!

3个回答

现在回答问题,都是没有采纳的,这里有个类似的问题,你将就看看吧。https://ask.csdn.net/questions/701696
如果要完整解答你的问题,请先采纳,网盘上传你的ini文件(以及你的代码,如果有的话,用zip压缩成一个文件),我帮你看。

你的环境好象是多字节类型的,不妨试试用unicode的专用函数和类型,CStringW str=GetPrivateProfileStringW(???);
这样读到的str应当是正确的
然后需要的话可以CStringA stra=CStringA(str);

说来也怪,昨天整了一天,今天一早来公司一开机,一调试,尽然可以了!之前该重启的我也重启过了,难道是工控机在逗我呢?冥冥之中上天非要让我走一遭啊!接下来继续留意这个问题,看能不能找到根本的原因

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐