ifstream in(szFileName);
string strWord;
while( getline(in, strWord) )
{
      SendMessage(hShowListWnd, LB_ADDSTRING, 0, (LPARAM)ANSI_TO_TCHAR(strWord.c_str()));
}ANSI_TO_TCHAR()是把char类型转换为tchar类型。
我用ifstream读取一个文本文件,读出一行就填充到list中(hShowListWnd是list的句柄),但读出来的汉字都是乱码?
各位高人给讲讲咋解决呗?谢谢啊!

解决方案 »

  1.   

    ANSI、UNICODE、UTF-8 文件编码转换
    http://blog.csdn.net/DavidHsing/archive/2008/11/17/3317841.aspx
      

  2.   

    是先检查文件格式,在根据文件格式读取吗? 如果是UTF-8的,该怎么转呢?
      

  3.   

    你确定你的文本是ansi字符串么?如果不是怎么办?
      

  4.   

    你不要那个ANSI_TO_TCHAR()函数试试看??如果不行 估计就是格式不对  那你就用        WCHAR* tmp = NULL;
    tmp = new WCHAR[strHTML.GetLength()+1];
    int n = MultiByteToWideChar(CP_UTF8,0,(LPCTSTR)strHTML,strHTML.GetLength(),tmp,strHTML.GetLength()+1);
    strHTML = tmp;
    那个strHTML就是要转换的UTF-8字符
      

  5.   


    utf8转成unicode就行了http://www.cppblog.com/greatws/archive/2008/08/31/60546.html
      

  6.   

    谢谢大家,用MultiByteToWideChar转换一下就可以了,那怎么知道文件是以哪种编码方式存储的呢?
      

  7.   

    我想用fstream对文件操作,fstream可以判断文件是以哪种编码方式存储吗?