VS2005嵌入式编程需要UNICODE编码,原来VC6.0编程时没有设置UNICODE可以正常显示汉字,现在CString中存的文件中读到的汉字不可以正常显示为乱码,不知如何转换成UNICODE编码嵌入式UnicodeVisual Studio 2005编程

解决方案 »

  1.   

    在工程属性页面,选择字符集 Unicode
      

  2.   

    就是选了 Unicode是乱码的 嵌入式工程默认的就是字符集 Unicode
      

  3.   

    这个是对已定汉字字符串可以,我现在需要从txt文件中读取字符串显示到列表框中。
            CStdioFile file;
    CString strText = _T("");
    CString Str1=_T("");
    int n=0;
    if (!file.Open(_T(".\\NandFlash\\集中器列表.txt"), CFile::modeRead))
    {
    ::AfxMessageBox(_T("文件打开失败。"));
    return 0;
    }
    m_listptr.ResetContent();
    while (file.ReadString(strText))
    {
    n=strText.Find(_T(":"));  // 找字符串中是否有:符号,返回:前字符的个数
    Str1=strText.Left(n);  // 取.符号左边的字符串
    m_listptr.AddString(Str1);
    }
    file.Close();
    列表中显示的汉字为乱码,数字符号正常
    txt文件内容如下
    小区1号#701公用变:123450
    小区2号#105公用变:123451
    小区3号#183公用变:123452
    小区4号#039公用变:123453
    文化中心007公用变:123454
      

  4.   

    用WCHAR* pBuf[MAX_PATH]={0}; 来读取数据。。
      

  5.   

    L""
    _T("")用SetLocale 设置下语言
      

  6.   

    char 是单字节 ,WCHAR 是多字节。。中文就是双子节,用WCHAR
      

  7.   

    那要怎么写啊
    怎么读?要用fopen和fgets吗?
      

  8.   


    你首先要确认, 你的文件中保存的是ASCII还是UNICODE编码的串. 如果文件中保存的不是UNICODE串, 则需要转码.  MultByteToWideChar当然, CString支持自动转换的.char buf[] = "string";
    CStringW Str = buf;所以, 如果你的文件中原来保存的就是ascii串, 那么直接以二进制方式打开读取, 然后读取到char数组中, 然后赋值给CString变量即可. 
      

  9.   

    谢谢!后来用的 MultByteToWideChar
    你首先要确认, 你的文件中保存的是ASCII还是UNICODE编码的串. 如果文件中保存的不是UNICODE串, 则需要转码.  MultByteToWideChar当然, CString支持自动转换的.char buf[] = "string";
    CStringW Str = buf;所以, 如果你的文件中原来保存的就是ascii串, 那么直接以二进制方式打开读取, 然后读取到char数组中, 然后赋值给CString变量即可.