如题,新手,帮帮忙啊

解决方案 »

  1.   

    你自己转换就行了,这儿有比较详细的介绍http://blog.csdn.net/Augusdi/archive/2009/10/15/4677544.aspx
      

  2.   

    CFIle不可以控制字符集, 你可以在写入之前转换字符,如果是unicode的就用
    WideCharToMultiByte 转换
      

  3.   

    好像默认的就是 ANSI 吧?你是要实现什么功能?把数据写入文件中?
      

  4.   


    是的,我项目工程使用的是U,写入文件想使用ANSI。结果写入总是有乱码,而且换行总是不对
      

  5.   

    Unicode转Ansi
    也是2种方法void CConvertDlg::OnBnClickedButtonUnicodeToAnsi()
    {
        // unicode to ansi
        wchar_t* wszString = L"abcd1234你我他";
        //预转换,得到所需空间的大小,这次用的函数和上面名字相反
        int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
        //同上,分配空间要给'\0'留个空间
        char* szAnsi = new char[ansiLen + 1];
        //转换
        //unicode版对应的strlen是wcslen
        ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
        //最后加上'\0'
        szAnsi[ansiLen] = '\0';
        //Ansi版的MessageBox API
        ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);    //接下来写入文本
        //写文本文件,ANSI文件没有BOM
        CFile cFile;
        cFile.Open(_T("1.txt"), CFile::modeWrite | CFile::modeCreate);
        //文件开头
        cFile.SeekToBegin();
        //写入内容
        cFile.Write(szAnsi, ansiLen * sizeof(char));
        cFile.Flush();
        cFile.Close();
        delete[] szAnsi;
        szAnsi =NULL;
        //方法2
        //和上面一样有另一种方法
        setlocale(LC_CTYPE, "chs"); 
        char szStr[100];
        //注意下面是大写,在ansi中,代表后面是unicode字符串
        //sprintf
        sprintf(szStr, "%S", wszString);
        ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);
    }
      

  6.   

    if( defined unicode )
        转换为ascii再写