如何解决vc6.0编写的ftp客户端,出现中文为乱码的问题?
在头文件中引用了#include "afxinet.h"
使用的是MFC编程
连接ftp后显示的中文是乱码:
请问大师怎么解决?
char * pOldLocale = _strdup(setlocale(LC_CTYPE, NULL));
if(m_check_utf8 == true)
{
//setlocale(LC_CTYPE, "zh_CN.UTF-8");LC_ALL,"Chinese-simplified"
setlocale(LC_CTYPE, "zh_CN.UTF-8");
}
BYTE nFild[4];
ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);
CString sip;
sip.Format("%d.%d.%d.%d",nFild[0],nFild[1],nFild[2],nFild[3]);
CString strusr = m_ftpuser;
CString strpwd =m_ftppassword;
if (sip.IsEmpty())
{
AfxMessageBox(_T("IP地址为空!"));
return;
}
if (strport.IsEmpty())
{
AfxMessageBox(_T("端口号为空!"));
return;
}
if (strusr.IsEmpty())
{
return;
}
//建立一个Internet会话
pInternetSession= new CInternetSession("MR",INTERNET_OPEN_TYPE_PRECONFIG);
try
{
//利用Internet会话对象pInternetSession打开一个FTP连接
pFtpConnection=pInternetSession->GetFtpConnection(sip,strusr,strpwd,atoi(strport));
bconnect=true;
}
catch (CInternetException* pEx)
{
TCHAR szErr[1024];
pEx->GetErrorMessage(szErr,1024);
AfxMessageBox(szErr);
pEx->Delete();
}
if(m_check_utf8 == true)
{
setlocale(LC_CTYPE, pOldLocale);
free(pOldLocale);
}
}
CFtpFileFind ftpfind(pFtpConnection);
//找到第一个文件或者文件夹,通过CFtpFileFind::FindFile实现
BOOL bfind=ftpfind.FindFile(NULL);
//unicode宽字符转 UTF8
//char wbuff2[40001];
//wi = WideCharToMultiByte(CP_UTF8, NULL,(LPCWCH)wbuff, -1, wbuff2, 4000, 0, 0);
//wbuff2[wi] = 0;
//if (wi == 0)
//MessageBox("error 文件名转换成UTF8不成功");csdisplay +="error 文件名转换成UTF8不成功rin"!goto WOUT;
int count = 0;
m_list_ftpfile.DeleteAllItems();
while (bfind)
{
bfind=ftpfind.FindNextFile();
CString strpath;
if (!ftpfind.IsDirectory())//判断是目录还是文件夹
{
strpath=ftpfind.GetFileName();//是文件则读取文件名
CTime lasttime;
ftpfind.GetLastWriteTime(lasttime);
CString t = lasttime.Format("%c");
count = m_list_ftpfile.GetItemCount();
m_list_ftpfile.InsertItem(count ,"");
m_list_ftpfile.SetItemText(count, 0 , strpath);
m_list_ftpfile.SetItemText(count, 1 , t);
}
else{
strpath=ftpfind.GetFilePath();//如果是文件夹则获取相对路径
CTime lasttime;
ftpfind.GetLastWriteTime(lasttime);
CString t = lasttime.Format("%c");
count = m_list_ftpfile.GetItemCount();
m_list_ftpfile.InsertItem(count ,"");
m_list_ftpfile.SetItemText(count, 0 , strpath);
m_list_ftpfile.SetItemText(count, 1 , t);
m_message = m_message + strpath;
}
}
UpdateData(false);