使用CStdioFile 读取Unicode文件时出现乱码问题解决方案

使用CStdioFile 读取Unicode文件时出现乱码问题解决方案


我们都知道在stdFile.ReadString(temp)中,temp是CString类型,但是我们接收到的数据由于是宽字符

,所以在CEditBox显示有乱码。

 

可能网上提供了大量的方法将WCHAR或者wchar_t转化为CString的方法,不可少都用到了

MultiByteToWideChar和WideCharToMultiByte方法。


不过我在这里提供一种更为简便的方式,使用CStringA来接收stdFile.ReadString中的数据。


摘自:http://blog.csdn.net/password318/article/details/7003979

使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*

类型的。这个时候用CStringA是最好的。
 
另外CStringA与CString可以灵活地随意转换赋值,注意不能这样用:
 CString str1;
 CStringA str2=str1;
 而要这样用:
 CStringA str2;
 str2=str1;
 
这样就可以把UNICODE版本字符串转换为Ansi版本了,非常之强大,非常之方便!


所以我在这里直接使用CStringA代替CString,获取字符,获取内容正确。

我的代码:

 CString temp;
 CStringA  strTemp;
 CString filePath = "logofile.txt";  //加载文件路径(相对路径)
 CStdioFile stdFile;
 if( stdFile.Open(filePath,CStdioFile::modeRead))
 {
  while( stdFile.ReadString(temp))
  {
   strTemp += temp;
   strTemp += "\r\n";  //换行
  }
  stdFile.Close();
 }
  return strTemp;


希望这个方法对和我有一样困惑的人有所帮助。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值