(MFC)要怎么才能读取Unicode 编码的文本??(Unicode环境)

2024-12-25 09:03:16
推荐回答(4个)
回答1:

头文件中要定义过
#define _UNICODE
这是最主要的,这样编译时会用 unicode 库。

class CString 使用 TCHAR data 类型, 本身就支持 unicode.
程序里用 宏 _T 转换普通字符串 到 unicode
程序里用 TCHAR 代替原来用的char.
用LPTSTR 代替原来用的 char*
用LPCTSTR 代替原来用的 const char*.

回答2:

我写了下面的代码,你自己根据下面这段代码自己改改:
============================
void CBaiduUseMfcMBDlg::OnBnClickedOk()
{
WIN32_FIND_DATAW FindFileData;
HANDLE hFind;

char serverPath1_Mbs[MAX_PATH];
wchar_t serverPath1_Unicode[10240];
wchar_t serverPath1_FindFirstUse[10240];
wchar_t serverPath1_ForDelete[10240];
DWORD dwError = 0;

//此处拷贝你的参数到serverPath1_Mbs中
strcpy(serverPath1_Mbs,"D:\\中文目录下的文件哦\\");
memset(serverPath1_Unicode,0x0,10240*2);
memset(serverPath1_FindFirstUse,0x0,10240*2);

//此处将char*转换为wchar_t*
::MultiByteToWideChar(
CP_ACP,
MB_COMPOSITE,
serverPath1_Mbs,
strlen(serverPath1_Mbs),
serverPath1_Unicode,
10240);

//下面调用win32的带"W"字母结尾的函数来执行所有宽字节参数的处理

wcscpy(serverPath1_FindFirstUse,serverPath1_Unicode);
wcscat(serverPath1_FindFirstUse,L"*.*");
hFind = ::FindFirstFileW( serverPath1_FindFirstUse, &FindFileData);
if (hFind == INVALID_HANDLE_VALUE)
{
::MessageBoxW(NULL,L"查找文件发生错误!",L"错误",MB_OK|MB_ICONERROR);
return;
}
else
{
if ( wcscmp(FindFileData.cFileName,L".") != 0 &&
wcscmp(FindFileData.cFileName,L"..") != 0 &&
FindFileData.dwFileAttributes && FILE_ATTRIBUTE_DIRECTORY != 0 )
{
wcscpy(serverPath1_ForDelete,serverPath1_Unicode);
wcscat(serverPath1_ForDelete,FindFileData.cFileName);
if ( ! ::DeleteFileW(serverPath1_ForDelete) )
{
dwError = ::GetLastError();
::MessageBoxW(NULL,L"删除文件发生错误",L"错误",MB_OK|MB_ICONERROR);
}
}

while ( 0 != ::FindNextFileW(hFind,&FindFileData) )
{
if ( wcscmp(FindFileData.cFileName,L".") != 0 &&
wcscmp(FindFileData.cFileName,L"..") != 0 &&
FindFileData.dwFileAttributes && FILE_ATTRIBUTE_DIRECTORY != 0 )
{
wcscpy(serverPath1_ForDelete,serverPath1_Unicode);
wcscat(serverPath1_ForDelete,FindFileData.cFileName);
if ( ! ::DeleteFileW(serverPath1_ForDelete) )
{
dwError = ::GetLastError();
::MessageBoxW(NULL,L"删除文件发生错误",L"错误",MB_OK|MB_ICONERROR);
}
}
}

dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
::MessageBoxW(NULL,L"循环查找文件发生错误",L"错误",MB_OK|MB_ICONERROR);
}

return;
}
}

回答3:

新春到来喜事多,合家团圆幸福多;心情愉快朋友多,身体健康快乐多;一切顺利福气多,新年吉祥生意多;祝您好事多!多!多! 加分吧,嘻嘻

回答4:

为了提倡环保,节省纸张,在春节千万别送我贺卡,请在尽可能大的人民币上写下祝福的话送我就可以了,节约是美德,祝春节快乐!